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

标签 python nltk corpus named-entity-recognition

您好,下面是我的代码,用于删除停用词并获取包含技术相关术语(如 java、lan、端口、套接字等)的文本的命名实体

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 实体,所以我没有得到准确的结果,所以请建议我如何为我的文本获得正确的命名实体

谢谢

最佳答案

晚了,但还是来了。此外,这不是解决方案,更多的是对问题的解释,并试图为读者指明正确的方向。希望这对某人有帮助。

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

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

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

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

  • 您可以开始构建自己的停用词列表,方法是在发现单词时将其添加到列表中(在 POS 标签过滤之后)。这既乏味又容易出错,但比其他方法更简单。

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

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

关于python - nltk语料库应该使用什么来识别技术相关文本的pos标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010582/

相关文章:

python - Mongoengine 文档作为 EmbeddedDocument

python - 在 python 中确定文本语言和纠正拼写错误的最佳算法是什么?

python - 使用 NLTK 和 Pandas 删除停用词

在 Lucene 中搜索属性值对应关系

python - 如何在 Python 中发送 HTTP Get Web 请求?

php - 将 AJAX 示例从 php 转换为 python/django

python - POS 标记的 NLTK 语料库中的正则表达式

Python NLTK - 从语料库生成 'Dictionary' 并保存数字标签

python - 如何打印 Wordnet 的全部内容(最好使用 NLTK)?

python - 如何在网格上进行细化绘制?