4

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

我想做的是使用正则表达式或 NLP 构建一个工具,然后使用这些词来识别基于新文档的结果。我不打算花费大量时间来定制 NLP 工具,因此具有合理准确性的东西就足够了。

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

4

4 回答 4

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

我建议先尝试使用 unix 文本工具。来自 coursera自然语言处理课程 Word Tokenization Lesson,Youtube 链接在这里这里有一个简单的教程。

为此,我们使用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

管道您的命令再次排序以查看最常用、最常用的单词。

这里的问题:'and' 和 'And' 计数了两次

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

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

于 2013-03-21T19:39:02.630 回答
0

在这种特殊情况下,自然语言处理当然并不容易,也许并不真正需要。关于标准化,也许tf-idf就足够了?

于 2013-07-17T13:21:45.627 回答
0

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

通过 GUI 工具在语料库上使用 Annotations 进行注释和组成短语,然后运行 ​​Java Annotation Patterns Engine (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

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

我们已经在我们的一个应用程序中使用此工具的帮助从医学语料库中体验了我们的体征和症状提取系统。

谢谢。

于 2013-03-21T17:10:55.017 回答
-1

你可以在这里找到一些有用的 R 包的链接:

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

于 2013-03-21T18:27:47.140 回答