基于词性标注的内容词提取

topia.termextract的Python项目详细描述


详细文档

术语提取

这个包通过使用一个简单的 词类(POS)标记算法。

http://bioie.ldc.upenn.edu/wiki/index.php/part-of-speech

POS标记器

pos标记器使用词典来标记带有标记的单词。可用标记的列表 可在以下位置找到:

http://bioie.ldc.upenn.edu/wiki/index.php/pos戥u tags

由于单词可以有多个标记,因此正确标记的确定是 并不总是那么简单。然而,这个实现并不试图推断 语言使用,只需选择词典中的第一个标记。

< Buff行情>
>>> from topia.termextract import tag
>>> tagger = tag.Tagger()
>>> tagger
<Tagger for english>

为了使标记器准备好工作,我们需要初始化它。在这 实现加载词典。

< Buff行情>
>>> tagger.initialize()

现在我们可以开始摇滚了。

标记化

标记的第一步是将文本标记为术语。

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']

虽然大多数标记符忽略标点符号,但我们必须保留它, 因为我们以后需要它来提取术语。我们再来看看 复杂案例:

  • 引用文本

    >>> tagger.tokenize('This is a "simple" example.')
    ['This', 'is', 'a', '"', 'simple', '"', 'example', '.']
    
    >>> tagger.tokenize('"This is a simple example."')
    ['"', 'This', 'is', 'a', 'simple', 'example', '."']
    
  • 单词中没有字母。

    >>> tagger.tokenize('Parts-Of-Speech')
    ['Parts-Of-Speech']
    
    >>> tagger.tokenize('amazon.com')
    ['amazon.com']
    
    >>> tagger.tokenize('Go to amazon.com.')
    ['Go', 'to', 'amazon.com', '.']
    
  • 各种标点符号。

    >>> tagger.tokenize('Quick, go to amazon.com.')
    ['Quick', ',', 'go', 'to', 'amazon.com', '.']
    
    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    0
  • 对错误标点符号的容忍度。

    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    1
  • 所有格结构。

    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    2
  • 数字。

    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    3
  • 日期。

    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    4

好的,就这样。

标记

下一步是标记。标记分两个阶段完成。在第一次 通过查看词典和规范化的 形式设置为术语本身。在第二阶段,应用一组规则 对每个标记的术语进行标记和规范化调整。

< Buff行情>
>>> from topia.termextract import tag
>>> tagger = tag.Tagger()
>>> tagger
<Tagger for english>
5

所以,哇,这个决心是死定了。让我们试试复数形式的名词 发生了什么:

< Buff行情>
>>> from topia.termextract import tag
>>> tagger = tag.Tagger()
>>> tagger
<Tagger for english>
6

到目前为止还不错。让我们再测试几个案例:

< Buff行情>
>>> from topia.termextract import tag
>>> tagger = tag.Tagger()
>>> tagger
<Tagger for english>
7
>>> from topia.termextract import tag
>>> tagger = tag.Tagger()
>>> tagger
<Tagger for english>
8
规则
  • 更正默认名词标记

    < Buff行情>
    >>> from topia.termextract import tag
    >>> tagger = tag.Tagger()
    >>> tagger
    <Tagger for english>
    
    9
  • 在句子开头确认专有名词。

    < Buff行情>
    >>> tagger.initialize()
    
    0
  • 确定情态动词之后的动词

    < Buff行情>
    >>> tagger.initialize()
    
    1
  • 规范化复数形式

    < Buff行情>
    >>> tagger.initialize()
    
    2

    一些不起作用的情况:

    < Buff行情>
    >>> tagger.initialize()
    
    3

术语提取

现在我们可以标记文本了,让我们来看看术语提取。

< Buff行情>
>>> tagger.initialize()
4

如您所见,提取器维护一个标记:

< Buff行情>
>>> tagger.initialize()
5

创建提取器时,还可以传入标记器以避免频繁出现 标记器初始化:

< Buff行情>
>>> tagger.initialize()
6

让我们获取简单文本的术语。

< Buff行情>
>>> tagger.initialize()
7

我们没有条件。因为在默认情况下 如果术语由单个单词组成,则必须检测该术语。

提取器维护一个过滤器组件。让我们把琐碎的 允许过滤器,它只返回提取器建议的所有内容:

< Buff行情>
>>> tagger.initialize()
8

但是让我们再看看默认的过滤器,因为它低点调整其 参数:

< Buff行情>
>>> tagger.initialize()
9

现在让我们来看看多词术语。多词名词和 在文本中,专有名称只出现一次或两次。但它们通常是伟大的 条款!为了处理这种情况,"力量"的概念是 介绍。目前的优势只是 术语。默认情况下,将选择强度大于1的所有术语 无论发生多少次。

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
0

一个exmaple-一篇新闻文章

本文档提供了一个提取bbc术语的简单示例 文章自2009年5月29日起。我们将使用几个术语提取工具来 比较结果。

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
1

雅虎关键词提取程序

Yahoo提供了一个服务,它使用 它庞大的搜索数据库。

http://developer.yahoo.com/search/content/v1/termextraction.html

如您所见,结果非常好:

>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
2

不幸的是,该服务每24小时只允许5000个请求。还有,那里 术语上没有强度指标。

treetagger

一种用语言学来标记文本的词性标记器。输出如下:

>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
3

如你所见,Treetagger的身份很好,但是 输出将需要一些分析来产生一组有用的术语。此外, Treetagger不可免费用于商业用途。

托皮亚术语提取器

topia的术语提取器试图在pos之间产生结果 像treetagger和yahoo关键字提取这样的标记。

因为我们只对名词感兴趣,一个非常简单的词性标注算法可以 部署,这将在大多数情况下提供良好的结果。然后我们使用 一些简单的统计和语言学产生了 内容的条款。

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
4

让我们先看看标记器的结果:

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
5

现在让我们应用提取器。

< Buff行情>
>>> tagger.tokenize('This is a simple example.')
['This', 'is', 'a', 'simple', 'example', '.']
6

更改

1.1.0(2009-06-29)

  • 对字典进行了一些改进,以改进实际情况。

1.0.0(2009-05-30)

  • 初始释放
    • 使用现有词汇和非常简单的词性标注 语言规则。
    • 基于发生率和术语强度的术语提取。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为textview创建选定状态(突出显示)   Java Hibernate计数行   Java语言中的字符串比较   java为什么SparkLauncher会立即返回而不会生成任何作业?   java layout_centerInParent在抛出回收视图后不工作   c#中的readInt16()与java中的readShort()   java如何在工具栏菜单中添加昼夜切换器   java在eclipse上向Tomcat提供<Realm/>信息   java使用给定的随机路径构造一个图   带有对象推送的java Morphia聚合阶段组   java关闭JTable实例   性能如何更好地转换java中的所有集合元素?   JAVA木卫一。IOException:通过Eclipse读取Java中的EOF Lucene   java如何在Android中将光标设置在tableLayout的行/列中所需的位置   使用HashMap的Set的java迭代器不会生成值/键吗?   java google guava cachebuilder在ExipeAfterAccess和expireActerWrite之间使用的时间更长   如何将这个排序映射方法从java转换为Kotlin   java如何从运行的JAR文件中读取war目录?   SpringBootJava。使用Java 9模块(JPM)时lang.NoSuchMethodError