我是一名研究员,拥有约17,000份自由文本文件,其中约30-40%与我的结果相关。是否有一个开源工具我可以用来确定与结果相关的最常见的单词(甚至是短语,但不是必需的),对已经发生的单词的频率进行标准化?所有文件都是由医护人员编写的,因此规范化非常重要,因为两种文件都有技术语言,并且还希望筛选出“the”,“it”等字样。
我要做的是使用正则表达式或NLP构建工具,然后使用这些单词根据新文档识别结果。我不打算花大量的时间来定制NLP工具,所以具有合理准确性的东西就足够了。
我知道SAS,SQL(使用postgreSQL)和Python,但可能会在R中获得。我以前没有做过任何NLP。有没有我可以使用的软件没有太陡峭的学习曲线?谢谢!
答案 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。
为此,我们使用tr,uniq和sort。如果您以前使用过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
或
是您可以查看的有用链接。
我们已经体验过我们的标志&amp;在我们的一个应用程序中使用此工具帮助从医学语料库中提取症状。
感谢。
答案 2 :(得分:0)
NLP当然不容易,在这种特殊情况下可能并非真正需要。关于规范化,或许tf-idf就足够了吗?
答案 3 :(得分:-1)
您可以在此处找到一些有用的R包的链接:
http://cran.r-project.org/web/views/NaturalLanguageProcessing.html