我该如何进行数据挖掘的文字堆砌的使用情况,以获取关键字? (“雅各史密斯”或“围栏”)
而且有一个软件已经做到这一点? 甚至半自动的,如果它可以过滤掉像简单的话“的”,“和”,“或”,那么我能得到的主题更快。
我该如何进行数据挖掘的文字堆砌的使用情况,以获取关键字? (“雅各史密斯”或“围栏”)
而且有一个软件已经做到这一点? 甚至半自动的,如果它可以过滤掉像简单的话“的”,“和”,“或”,那么我能得到的主题更快。
一般的算法将是这样的:
- Obtain Text - Strip punctuation, special characters, etc. - Strip "simple" words - Split on Spaces - Loop Over Split Text - Add word to Array/HashTable/Etc if it doesn't exist; if it does, increment counter for that word
最终的结果是文本中的所有单词的频率计数。 然后,您可以用文字的总数将这些价值观和分获得频率的百分比。 任何进一步的处理是由你。
你也要去想看看词干 。 词干是用来减少的话他们的根。 例如going => go
, cars => car
等。
像这样的算法将是垃圾邮件过滤器,关键字索引之类常见的。
这是在NLP一个悬而未决的问题,所以没有简单的答案。
我的快速和肮脏的建议“的作品,对我”是topia.termextract 。
雅虎具有关键字提取服务( http://developer.yahoo.com/search/content/V1/termExtraction.html ),其是低召回但高精度。 换句话说,它给你一个小数目的高品质方面,但是偏出许多在文档中的条款。
在Python中,有topia.termextract( http://pypi.python.org/pypi/topia.termextract/ )。 这是比较吵,并提出了许多虚假的关键词,但使用简单。
Termine( http://www.nactem.ac.uk/software/termine/ )是英国的web服务也比较吵,并提出了许多虚假的关键词。 然而,在我看来,要略高于topia.termextract更准确。 因人而异。
去噪太多的关键字结果的一种方式(如topia.termextract和termine)是创建一个频繁出现的术语的词汇,然后扔出去建议条款中没有的词汇。 换句话说,做两个超过你的文集:第一阶段,计算每个关键字的频率。 在第二遍,放弃过于罕见的关键字。
如果你想编写自己的,也许是最好的介绍是由公园,谁现在是IBM写:
这里有一些更多的参考,如果您想了解更多:
还有一个叫服务炼金术可以做词语提取,概念标记,情感分析等。
它是有效的,我测试过,但我不知道他们的商业策略(如果有的话)。 它们提供的API用于任何形式的语言(几乎)。
我读的地方(抱歉,我不记得了),相比于那些由约瑟夫提出炼金术给出的输出噪音更小。
您没有指定您正在使用的技术,所以我想一个shell脚本也是一种可能性。
我一直用这个词的频率分析,例如印象深刻高级Bash脚本编程指南 (12-11)
例如,以下从获取项目古登堡一本书,写出来的字频分析“报告”:
wget http://www.gutenberg.org/files/20417/20417-8.txt -q -O- |
sed -e 's/\.//g' -e 's/\,//g' -e 's/ /\
/g' | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr > output.txt
应该扩展到从“普通”列表中排除的话(在,和,一......)等。
我个人推荐的毛伊岛( http://code.google.com/p/maui-indexer/ ):它依赖于KEA,但它在以各种方式延伸。 它是能够接受训练,并且可以使用RDF格式的术语。
我用NTLK来识别命名实体取得了一些成功之前。 它是在承认人的和组织的名字特别好。