如何构建关键字云?我知道有很多nlp方法,但是我不确定它们如何解决以下问题:
您可以有几个项目,每个项目都有与之相关的关键字列表。
((在我自己的程序中,这些项目是我可以使用nlp方法检测专有名词,人物,地点和(?)可能是主题的文章。如果文章大小足够,这将是一个很大的列表,但是我会假设我可以通过比较文章来使用某种方法来筛选列表。如何正确执行此操作令我感到困惑。]
每个项目都可以有一个关键字列表,但是如何选择关键字,以使每个项目之间的关键字不会过于具体或过于笼统?例如,琐碎的“ the”可以是包含很多项目的关键字。虽然“超级口算主义者”只能合而为一。
I suppose我可以创建一种启发式方法,如果在n足够小的项目的n%中存在一个单词,但会返回一个不错的子列表(例如,每1000篇文章中的5%为50 ,这似乎很合理),那么我可以使用它。 但是,我采用这种方法的问题是,给定两组完全不同的项目,这些项目之间的相互关联性很可能存在一些差异,因此我将这些信息扔掉了。
这非常不令人满意。
我认为,鉴于关键字云的普及,必须已经创建了一个解决方案。但是,我不想使用库,因为我想理解和操纵数学中的假设。
如果有人有任何想法,请告诉我。
谢谢!
编辑:
freenode / programming / guardianx已建议https://en.wikipedia.org/wiki/Tf%E2%80%93idf
tf-idf可以,但是问题是需要先确定权重。考虑到两个不同的文档集合在文档之间具有不同的固有相似性,假设先验权重不正确]
freenode / programming / anon
建议的https://en.wikipedia.org/wiki/Word2vec我不确定我想要使用神经网络的东西(这个问题有点复杂吗?),但仍在考虑。
如何构建关键字云?我知道有很多nlp方法,但是我不确定它们如何解决以下问题:您可以有多个项目,每个项目都有与...相关的关键字列表...
Tf-idf仍然是提取关键字的相当标准的方法。您可以尝试a tf-idf-based keyword extractor的演示(它具有idf矢量,正如您所说的,是根据Wikipedia估算的)。一种流行的替代方法是基于PageRank的TextRank algorithm,在Gensim中有现成的实现。