应该使用哪个nltk语料库来识别技术相关文本的pos标签?

3

你好,以下是我用来去除停用词并获取包含技术相关术语(如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”等实体,所以我没有得到准确的结果,请建议我如何获取我的文本的正确命名实体。
谢谢。
1个回答

1
迟了,但还是来了。此外,这不是一个解决方案,更多的是解释问题并试图指导读者朝着正确的方向前进。希望这能帮助到某些人。
NLTK在该模块中使用停用词字典,因此它无法过滤掉您正在查找的所有内容。您需要查看为单词分配POS标签并将与您的问题无关的类型进行过滤。
然而,您正在寻找可以作为名词和专有名词的术语。因此,Java和Ian都会通过。问题在于POS标签不包含您要查找的额外信息,即这些词应与技术相关联。
这是一个非常难以高精度解决的问题,因为您需要从文本中推断上下文。这是自然语言处理(NLP)和机器学习领域的当前研究问题。
可能的解决方案可能包含以下一些技术。
  • 您可以开始构建自己的停用词列表,通过在POS标记过滤后将单词添加到列表中。这很繁琐且容易出错,但比其他选择简单。

  • NLP中有一些称为命名实体解析的方法,您可以查看。

  • 此外,请查看Google的Ngram语料库浏览器。他们对此进行了一些有趣的尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接