python - 从文本内容生成标签

标签 python tags machine-learning nlp nltk

我很好奇是否存在通过使用一些权重计算、出现率或其他工具从给定文本生成关键字/标签的算法/方法。

此外,如果您为此指出任何基于 Python 的解决方案/库,我将不胜感激。

谢谢

最佳答案

执行此操作的一种方法是提取文档中出现频率高于您预期的单词。例如,假设在更大的文档集合中,“马尔可夫”一词几乎从未见过。但是,在同一集合中的特定文档中,马尔可夫非常频繁地出现。这表明马尔科夫可能是与文档相关联的一个很好的关键字或标签。

要识别这样的关键字,您可以使用 point-wise mutual information关键字和文档。这由 PMI(term, doc) = log [ P(term, doc)/(P(term)*P(doc)) ] 给出。这将粗略地告诉您,在特定文档中遇到该术语与在更大的集合中遇到它相比,您有多少(或更多)感到惊讶。

要确定与文档相关联的 5 个最佳关键字,您只需按其在文档中的 PMI 得分对术语进行排序,然后选择得分最高的 5 个。

如果要提取多词标签,请参阅 StackOverflow 问题 How to extract common / significant phrases from a series of text entries .

借用我对该问题的回答,NLTK collocations how-to涵盖如何做 在大约 7 行代码中使用 n-gram PMI 提取有趣的多词表达式,例如:

import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures()

# change this to read in your data
finder = BigramCollocationFinder.from_words(
   nltk.corpus.genesis.words('english-web.txt'))

# only bigrams that appear 3+ times
finder.apply_freq_filter(3) 

# return the 5 n-grams with the highest PMI
finder.nbest(bigram_measures.pmi, 5)  

关于python - 从文本内容生成标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661778/

相关文章:

python - 有没有办法从音频文件中删除/编辑名为 "tag"的元数据条目,而无需安装任何其他内容?

javascript - HTML 下拉框重定向

python - org.apache.spark.SparkException : Unseen label with TrainValidationSplit

machine-learning - 如何为我的全连接神经网络找到合适的架构?

machine-learning - SIFT特征和图像分类?

python - 当试图模糊图像时,图像向左转

python - 我需要制作一个 "server"来处理流数据的多个持久连接

swift - 如何为 UITextField 创建自定义标签而不是标签 ID?

Windows : AttributeError: Can't get attribute "abc" 上 Jupyter 中的 python 多处理

python - 如何从 pip 搜索包的索引中删除 URL?