文本挖掘 - 最常见的单词,规范化

时间:2013-03-21 17:00:26

标签: nlp text-mining

我是一名研究员,拥有约17,000份自由文本文件,其中约30-40%与我的结果相关。是否有一个开源工具我可以用来确定与结果相关的最常见的单词(甚至是短语,但不是必需的),对已经发生的单词的频率进行标准化?所有文件都是由医护人员编写的,因此规范化非常重要,因为两种文件都有技术语言,并且还希望筛选出“the”,“it”等字样。

我要做的是使用正则表达式或NLP构建工具,然后使用这些单词根据新文档识别结果。我不打算花大量的时间来定制NLP工具,所以具有合理准确性的东西就足够了。

我知道SAS,SQL(使用postgreSQL)和Python,但可能会在R中获得。我以前没有做过任何NLP。有没有我可以使用的软件没有太陡峭的学习曲线?谢谢!

4 个答案:

答案 0 :(得分:2)

  tool I can use to determine the most common words... 
  ... so something with reasonable accuracy is good enough.

我建议先尝试使用unix文本工具。 来自coursera Natural Language Processing课程Word Tokenization Lesson,Youtube链接为here。一个简单的教程here

为此,我们使用truniqsort。如果您以前使用过unix文本工具,这是完整的命令。

 tr -sc 'A-Z' 'a-z'  < *.txt | tr -sc 'A-Za-z' '\n'  | sort | uniq -c | sort -n -r

以下是对每个部分的解释。

tr -sc 'A-Za-z' '\n' < filename.txt 

这个命令采用filename.txt改变每个单词,基本上你在每个单词之后添加新行。

tr -sc 'A-Za-z' '\n' < *.txt 

与上述相同,但目录中的所有txt文件。

tr -sc 'A-Za-z' '\n' < *.txt | sort 

管道您的命令进行排序。首先是从很多“a”字开始。

tr -sc 'A-Za-z' '\n' < *.txt | sort | uniq -c 

将管道排序结果输出到uniq命令并计算它。

tr -sc 'A-Za-z' '\n' < *.txt | sort | uniq -c | sort -n -r

再次管道你的命令排序以查看最常用的,最常见的单词。

问题在这里:'和'和'和'计算两次

tr -sc 'A-Z' 'a-z'  < *.txt | tr -sc 'A-Za-z' '\n'  | sort | uniq -c | sort -n -r

tr '[:upper:]' '[:lower:]' < *.txt | tr -sc 'A-Za-z' '\n'  | sort | uniq -c | sort -n -r

再次将所有单词更改为小写和相同的管道。这将为您提供文件中最常用的单词。

答案 1 :(得分:0)

GATE(文本工程的通用架构)是一个有用的工具。

通过GUI工具在语料库上使用注释进行注释和撰写短语,然后运行Java注释模式引擎(JAPE)对此非常有帮助。

http://gate.ac.uk/sale/tao/splitch8.html#chap:jape

http://gate.ac.uk/sale/thakker-jape-tutorial/GATE%20JAPE%20manual.pdf

http://gate.ac.uk

是您可以查看的有用链接。

我们已经体验过我们的标志&amp;在我们的一个应用程序中使用此工具帮助从医学语料库中提取症状。

感谢。

答案 2 :(得分:0)

NLP当然不容易,在这种特殊情况下可能并非真正需要。关于规范化,或许tf-idf就足够了吗?

答案 3 :(得分:-1)

您可以在此处找到一些有用的R包的链接:

http://cran.r-project.org/web/views/NaturalLanguageProcessing.html