【问题标题】:Internal implementation of nltk pos taggernltk pos tagger 的内部实现
【发布时间】:2018-08-08 22:49:24
【问题描述】:

我是 NLP 新手,正在尝试使用 nltk pos tagger,但对使用有疑问,

它通常接受一个单词或一个完整的句子,并给出输入的pos标签,为什么它是双向工作的?

我有这个疑问是因为,我尝试删除停用词并使用 spacy pos 标记技术,我的同事说我不应该那样做,因为结果会改变,因为它也会检查单词的位置,

nltk pos tagger 也一样吗?如果是,那么既然考虑了定位,为什么它接受单个单词?

在此处找到 nltk 中两个用例的示例用法:https://github.com/acrosson/nlp/blob/master/subject_extraction/subject_extraction.py#L61

https://github.com/acrosson/nlp/blob/master/subject_extraction/subject_extraction.py#L44

【问题讨论】:

    标签: nlp nltk spacy


    【解决方案1】:

    一个单词的句子仍然是一个句子,因此从软件工程的角度来看,我希望标注器模块无论句子的长度如何都可以正常工作。从语言的角度来看,情况并非如此。

    positioning 这个词似乎让您感到困惑。许多 PoS 标注器都是基于序列模型的,例如 HMMsCRFs*。这些使用上下文功能,例如句子中的前一个/下一个词是什么。我想这就是你同事的意思。如果只考虑前一个词作为上下文,那么句子有多长并不重要。任何句子中的第一个词都没有前一个词,所以标注器必须学会处理它。然而,添加上下文可以改变标注器的决定——让我们看一个使用nltk的例子

    In [4]: import nltk
    
    In [5]: nltk.pos_tag(['fly'])
    Out[5]: [('fly', 'NN')]
    
    In [6]: nltk.pos_tag(['I', 'fly'])
    Out[6]: [('I', 'PRP'), ('fly', 'VBP')]
    
    In [7]: nltk.pos_tag(['Large', 'fly'])
    Out[7]: [('Large', 'JJ'), ('fly', 'NN')]
    

    如您所见,更改第一个单词会影响标注器对第二个单词的输出。因此,您应该在将文本输入 PoS 标记器之前删除停用词。

    * 虽然这并不总是正确的。 NLTK 3.3 的 PoS 标注器是平均感知器,而 spacy 2.0 使用神经模型——但关于上下文的论点仍然成立。

    【讨论】:

      【解决方案2】:

      nltk.pos_tag() 函数将令牌列表作为输入。此列表可以包含任意数量的令牌,当然包括 1。API documentation 中有更多信息。

      因此,在您引用的第一个示例中,nltk.pos_tag([w])w 应该是单个单词字符串,[w] 根据函数的要求将其放入列表中。

      在第二种情况下,nltk.pos_tag(sent),列表推导中的 sent 变量是一个已经被标记为标记列表的句子(参见您引用的代码中的第 41 行 - sentences = tokenize_sentences(document)),它也是pos_tag()要求的格式。

      我不确定您的同事为什么建议不要使用 spaCy。这取决于你想做什么。与 NLTK 不同,spaCy 在每个标记上存储了一组丰富的特征,包括标记在文档中的索引(位置)和原始文本中的字符偏移量。据我所知,NLTK 默认情况下不存储标记索引和字符偏移量,因此您必须自己尝试检索它(可能类似于 this)。

      【讨论】:

      • 它不是反对spacy,它是关于不删除停用词然后使用spacy,如果它以其他方式传达,请原谅我
      • 没问题。我误解了,但我认为 mbatchkarov 的回答可能会回答你的问题。
      • 但我无法理解,因为我没有足够的业力
      猜你喜欢
      • 2017-11-05
      • 1970-01-01
      • 2012-01-25
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      相关资源
      最近更新 更多