如何构建关键字云?

如何构建关键字云? 我知道有很多nlp方法,但是我不确定它们如何解决以下问题:

您可以有多个项目,每个项目都有与之相关的关键字列表。

(在我自己的程序中,这些项目是我可以使用nlp方法检测专有名词,人物,地点和(?)可能是主题的文章。如果文章大小足够,这将是一个很大的列表,但是我将假设我可以通过比较文章的方式使用某种方法来筛选列表。如何正确执行操作是我很困惑的事情。

每个项目都可以有一个关键字列表,但是它们如何选择关键字,以使每个项目之间的关键字不会过于具体或过于笼统? 例如,琐碎的“ the”可以是包含很多项目的关键字。 而“超能力”只能合而为一。

假定,我可以创建一种启发式方法,如果在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

我不确定我想要使用神经网络的东西(这个问题有点复杂吗?),但仍在考虑。

mihui1234 回答:如何构建关键字云?

Tf-idf仍然是提取关键字的非常标准的方法。您可以尝试a tf-idf-based keyword extractor的演示(它具有idf矢量,正如您所说的那样,根据Wikipedia估算)。流行的替代方法是基于PageRank的TextRank algorithm,在Gensim中有现成的实现。

如果您决定采用自己的实现,请注意,所有算法通常都需要大量调整和文本预处理才能正常工作。

您需要做的最低限度是删除您知道它们永远不能成为关键字的停用词(介词,冠词,代词等)。如果您想要更高级的内容,可以使用Spacy例如仅保留所需的词性(名词,动词,形容词)。您还可以包含频繁的多字表达式(gensim具有良好的自动并置检测功能),命名实体(spacy可以做到)。如果您运行共指解析并用代词替换代词,将会获得更好的结果。有无数种选择可供改进。

本文链接:https://www.f2er.com/3126573.html

大家都在问