如何从一堆文本中提取完整实体(不是部分实体)

时间:2013-04-22 18:26:51

标签: nlp

这可能是一个经典的NLP问题,但如何在一堆推文中提取FULL实体呢?

例如,假设有一堆推文提到“波士顿”和“马拉松”,两者都在同一条推文中。我怎么知道我应该提取“波士顿马拉松”而不仅仅是波士顿或马拉松?

同样,假设有很多推文提到“权力的游戏”。我怎么知道要提取的实体是权力的游戏,而不仅仅是游戏?

4 个答案:

答案 0 :(得分:2)

大多数命名实体识别器都使用所谓的IOB(内外开始)标记方案,因为您要问的方案完全正确。例如,句子

John saw Game of Thrones.

应标记为

John/B-PERSON saw/O Game/B-MISC of/I-MISC Thrones/I-MISC.

注意“权力游戏”的第二和第三个标记是如何被标记为在命名实体内,从“游戏”开始。当然,无法保证您使用的标记符会产生这种精确的标记序列。

您可以在NLTK book中了解有关IOB的更多信息。

答案 1 :(得分:2)

尝试的另一件事可能是提取搭配。有关此方法的介绍,请参阅the following article

答案 2 :(得分:0)

您也可以尝试使用DBpedia-Spotlight端点..

http://spotlight.dbpedia.org/rest/spot/?text=

答案 3 :(得分:0)

我目前正在从事件数据库中提取命名实体。我已经尝试了几个库NLTK,PHP脚本等。但我找到的最好的是斯坦福NER:http://nlp.stanford.edu:8080/ner/

english.all.3class.distsim.crf.ser.gz

<PERSON>John</PERSON> saw Game of Thrones.

english.conll.4class.distsim.crf.ser.gz

John saw <ORGANIZATION>Game of Thrones</ORGANIZATION>.

忽略分类类型。

我使用不同的分类器从文本中提取实体。之后我使用Stanford Parser:http://nlp.stanford.edu:8080/parser/

键入的依赖项,已折叠

nsubj(saw-2, John-1)
root(ROOT-0, saw-2)
dobj(saw-2, Game-3)
prep_of(Game-3, Thrones-5)

http://nlp.stanford.edu/software/dependencies_manual.pdf

指定我想要的命名实体。