2013-03-21 21 views
4

我是一名研究人員,擁有約17,000個自由文本文檔,其中大約30-40%與我的結果相關。是否有一種開放源代碼工具可用於確定與結果相關的最常用單詞(或甚至是短語,但不是必需的),從而使已經發生的單詞頻率標準化?所有文件均由醫護人員撰寫,所以重要的是規範化,因爲這兩份文件都會有技術性語言,並且還希望篩選出像「the」,「it」等字樣。文本挖掘 - 最常用的詞,規範化

我想要做的是使用正則表達式或NLP構建一個工具,然後使用這些詞來確定基於新文檔的結果。我不打算花費大量時間來定製NLP工具,因此具有合理準確性的內容足夠好。

我知道SAS,SQL(使用postgreSQL)和Python,但可能會在R中得到。我之前沒有做過任何NLP。有沒有我可以使用的軟件沒有太大的學習曲線?謝謝!

+0

我的視頻系列演示瞭如何使用RapidMiner(FOSS,GUI)來做到這一點:http://vancouverdata.blogspot.ca/2010/11/text-analytics-with-rapidminer-loading.html – 2013-03-25 19:09:48

+0

'R'是一個這是一個很好的工具。如果你可以發佈一個Q樣本數據和你想要的結果的片段,那麼你可能會得到一些代碼來幫助你。使用'[r] [text-mining]'搜索SO,您可能會發現可以輕鬆適應您的用例的代碼。 – Ben 2013-03-27 07:00:45

回答

0

GATE(文本工程的通用架構)在這裏是一個有用的工具。

通過GUI工具製作註釋和組合帶註釋的語料庫,然後運行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

是其中您可以查看有用的鏈接。

我們已經體驗過我們的標誌&在我們的應用程序中使用此工具幫助從醫學語料庫提取症狀。

謝謝。

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課程,YouTube鏈接是here。一個簡單的教程here

爲此,我們使用tr,uniqsort。如果您之前使用過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 

管你的命令進行排序。首先將從很多「一」字開始。

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 

改變所有你的話再次小寫和相同的管道。這會讓你在你的文件中最常用的單詞。

+0

感謝您的迴應,我研究了所有3個答案,但這是一個非常簡單和優雅的方式來做到這一點。我也意識到由於我的問題的要求,我無法正常化,所以這正是我需要的。我如何從我的輸出中刪除單個字母,或者只是刪除撇號的?有額外的tr命令的指南嗎?謝謝! – user2144412 2013-03-22 14:35:49

+0

是的視頻鏈接也給出瞭如何去除單引號。當我有時間觀看時,我會更新答案。 – 2013-03-24 13:05:08

+0

謝謝,我的意思是因爲撇號被刪除了,我也收到了單個字母作爲結果,我想排除這些字母,並且也許把馬蒂和馬蒂當作同一個字。視頻中沒有解釋,但不用擔心響應,目前這種方法已經足夠滿足我的需求。 – user2144412 2013-03-26 17:29:36

0

NLP肯定不容易,在這種特殊情況下可能不是真正需要的。關於正常化,也許tf-idf就足夠了?