nltk语料库应该用什么来识别技术相关文本的pos标签

时间:2013-08-02 06:56:28

标签: python nltk corpus named-entity-recognition

下面是我的代码,用于删除停用词并获取包含技术相关术语(如java,lan,port,socket等)的文本命名实体

import nltk
from nltk.corpus import stopwords
import codecs
import os
import base64

def stop_final():
    result=[]
    text="some technology related text"
    text = nltk.word_tokenize(text)
    for word in text:
        if word not in stopwords.words('english'):
            result.append(word)

     print nltk.ne_chunk(nltk.pos_tag(result))

stop_final()

从上面的代码我得到lan,socket等的Person实体,所以我没有得到准确的结果,所以请建议我如何为我的文本获得正确的命名实体

由于

1 个答案:

答案 0 :(得分:1)

迟到了,但是到了。此外,这不是解决方案,更多是对问题的解释,并试图将读者指向正确的方向。希望这有助于某人。

NLTK在该模块中使用停用词词典,因此不会过滤您要查找的所有内容。您必须考虑为您的文字分配POS tags并过滤与您的问题无关的类型。

但是,您正在寻找可以是名词和专有名词的术语。因此,Java和Ian都会通过。问题是POS标签不包含您正在寻找的额外信息,即单词应与技术相关。

这是一个非常难以解决的高精度问题,因为您需要从文本中推断出上下文。这是自然语言处理(NLP)和机器学习领域的当前研究问题。

可能的解决方案可能包含以下一些技术。

  • 您可以开始构建自己的停用词列表,方法是在发现它们时向列表中添加单词(在POS标记过滤后)。这很乏味且容易出错,但比替代方案简单。

  • 您可以查看NLP中称为名称 - 实体解析的方法。

  • 此外,结帐Goolge's Ngram corpus viewer。他们做了一些有趣的事情。