2013-10-28 127 views
0

是否有任何已知的方式(超出统计分析,但不一定排除它作为解决方案的一部分),使用自然语言处理将句子或概念彼此关联起来。到目前为止,我只与NLTK和Stanford-NLP一起工作来帮助我的项目,但我愿意接受其他开源解决方案。提取相关文本给出一个句子,关键字或主题

举例如下乔治奥威尔散文(http://orwell.ru/library/essays/wiw/english/e_wiw)。假设我给应用程序的句子

"What are George Orwell's opinions on writers." 

或许

"George Orwell believes writers enjoy writing to express their creativity, to make a point and for their egos." 

可能会从作文产生线条状

"The aesthetic motive is very feeble in a lot of writers, but even a pamphleteer or writer of textbooks will have pet words and phrases which appeal to him for non-utilitarian reasons; or he may feel strongly about typography, width of margins, etc." 

"Serious writers, I should say, are on the whole more vain and self-centered than journalists, though less interested in money." 

我明白,这是不容易和我可能无法达到很高的准确度,但我希望能够提出有关已经存在的和我可以尝试开始的想法,或者至少基于已知和已知的内容获得最佳结果。

回答

1

这样做的最简单方法可能是使用查询句子和句子库之间的一些距离函数(例如余弦相似度)。这很容易实现。从文本集合中创建一个词汇表,并将每个句子表示为一个向量。您可以使用TF-IDF来表示向量中的值,并计算句子之间的余弦相似度,并获得关于您的查询语句的最高得分句子。

或者你可以从你的语料库建立索引,并使用例如Lucene,让它为你做工作。

您还可以考虑使用LSA(潜在语义分析),您可以在其中获得句子之间的相似性。

+0

我试过其中的一些方法,但他们是最“袋”的技术。我想我更有兴趣知道是否有任何已知的方法试图理解超出匹配词语的句子中的含义。我知道这是一个困难而深入研究的领域,我在这个时候一直无法找到它的立场。感谢您的回应! – user2926522

0

从我对你的问题(以及你的评论)的理解中,你是更有兴趣了解单个句子的含义,然后相互等距。在我看来,统计方法更多的是“理解”句子而不是理解它。在我看来,我会建议深入的解析方法。

深入分析句子,理解单词在句子中扮演的角色,理解主语 - 动词 - 宾语模型(从左到右的解析和这些技巧),然后有一个词汇可以帮助您对名词和动词进行分类。

例如

"Serious writers, I should say, are on the whole more vain and self-centered than journalists, though less interested in money." 

解析这句话,让你理解句子的主题是“严肃的作家”(认真是一个形容词,作家基本上)。在动词形式中,它陈述“是”(当前状态)和“感兴趣”。每个动词都会指向更多的词汇,包括形容词。如果你以正确的方式安排这个词汇(并且继续建设它),我认为你应该找到解决问题的地方。