3

我想找到一种在我网站上的用户搜索查询中识别人名、地名等的好方法。例如,如果用户问“乔治华盛顿多大了”,我需要能够从预定义的列表中知道乔治华盛顿是一个人。

有些列表是全局的,有些是用户特定的。例如,如果他们问“约翰史密斯多大了”,我可能只想确定我的同事的特定约翰史密斯——如果他不是我的同事,我不想将他识别为一个人。

是否有任何 NLP 库或这些列表的爬行,我可以利用 Soundx、成熟的 NLP、拼写错误等功能?我可以手写,但我宁愿利用成熟的东西。谢谢。

4

2 回答 2

4

你需要的叫做Named Entity Recognition

斯坦福 NLP 附带的最好的可用软件之一:http: //nlp.stanford.edu/software/CRF-NER.shtml (用 Java 编写)

如果你在另一个平台上,Ruby 和 Python 中有很好的开源项目。搜索“命名实体识别”。

于 2013-01-29T18:10:45.377 回答
2

您正在寻找的特定自然语言处理 (NLP) 任务称为Named Entity Recognition(NER)

除了斯坦福的CRF-NERNatural Language ToolKit (在 java 中)之外,来自( NLTK )的流行 python 选择通常用作 NER 任务的基线。

您可以尝试安装 NLTK,然后执行以下代码:

>>> from nltk.tokenize import word_tokenize
>>> from nltk.tag import pos_tag
>>> from nltk.chunk import ne_chunk
>>> sentence = "How old is John Smith?"
>>> ne_chunk(pos_tag(word_tokenize(sentence)))
Tree('S', [('How', 'WRB'), ('old', 'JJ'), ('is', 'VBZ'), Tree('PERSON', [('John', 'NNP'), ('Smith', 'NNP')]), ('?', '.')])
于 2013-01-30T05:47:47.583 回答