我想知道是否存在一种算法或方法,可以通过一些权重计算、出现频率或其他工具,从给定的文本中生成关键词/标签。
另外,如果您能指出任何基于Python的解决方案/库,我将不胜感激。
谢谢
回答:
一种方法是提取在文档中出现频率高于偶然预期的词。例如,假设在一大组文档中,“Markov”这个词几乎从未出现过。然而,在同一集合中的某一特定文档中,Markov却频繁出现。这表明Markov可能是一个适合与该文档关联的关键词或标签。
要识别这样的关键词,您可以使用关键词与文档的点互信息。其计算公式为PMI(term, doc) = log [ P(term, doc) / (P(term)*P(doc)) ]
。这大致可以告诉你在特定文档中遇到这个词的惊讶程度与在更大集合中遇到它相比有多少减少(或增加)。
要识别与文档关联的最佳5个关键词,您只需按关键词与文档的PMI得分排序,并选择得分最高的5个即可。
如果您想提取多词标签,请查看StackOverflow上的问题如何从一系列文本条目中提取常见/重要短语。
借用我对那个问题的回答,NLTK搭配使用指南介绍了如何使用n-gram PMI在大约7行代码中提取有趣的多词表达式,例如: