我意识到这是一个广泛的话题,但是我正在寻找一个很好的入门手册,以解析文本中的含义,最好是在Python中。例如,如果用户发表博客帖子,例如:
“曼尼·拉米雷斯(Manny Ramirez)今天在对阵休斯顿太空人队的比赛中返回道奇队”,
从句子中提取名词的轻巧/简便方法是什么?首先,我想将其限制为专有名词,但我不希望仅限于此(我也不想依靠一个简单的正则表达式来假定标题封顶是专有名词)。
使这个问题更糟的是,我不是在问我应该做些什么?我是否需要现有单词的语料库才能上手?我需要了解哪些词法分析知识才能完成这项工作?我确实遇到过有关该主题的one other question,现在正在挖掘这些资源。
最佳答案
使用NLTK,尤其是chapter 7 on Information Extraction.
您说您想提取含义,并且有用于语义分析的模块,但是我认为IE就是您所需要的-老实说,NLP计算机目前只能处理的领域之一。
请参阅“命名实体识别”子主题的第7.5和7.6节(将Manny Ramerez作为一个人,Dodgers作为一个运动组织,而Houston Astros作为另一个运动组织,或者适合您的领域的子集)和关系提取。一旦安装了NLTK,便可以插入一个NER分块器。从他们的示例中,提取一个地缘政治实体(GPE)和一个人:
>>> sent = nltk.corpus.treebank.tagged_sents()[22]
>>> print nltk.ne_chunk(sent)
(S
The/DT
(GPE U.S./NNP)
is/VBZ
one/CD
...
according/VBG
to/TO
(PERSON Brooke/NNP T./NNP Mossman/NNP)
...)
请注意,您仍将需要了解标记化和标记(如前几章所述),以使这些IE任务的文本格式正确。