2010-06-21 56 views
0

我有一段文字,我想提取最經常使用的術語,即使由多個單詞組成(即:總經理,職位,薪水,網站開發人員)。簡單的工具在文本中查找最經常使用的術語

我需要一個庫或可安裝的可執行文件,而不僅僅是一個web服務。

我遇到了一些需要培訓的複雜工具(如Topia的術語抽取,MAUI)。我的目的過於複雜,我發現他們很難用於我。

我只需要一段軟件,它可以提取文本中最常用的術語。

謝謝。

回答

3

你用linux嗎?我使用這些外殼功能

# copyright by Werner Rudolph <werner (at) artistoex (dot) net> 
# copying and distributing of the following source code 
# is permitted, as long as this note is preserved. 

# ftr CHAR1 CHAR2 
# translate delimiter char in frequency list 
# 

ftr() 
{ 
    sed -r 's/^(*[0-9]+)'"$1"'/\1'"$2"'/' 
} 


# valid-collocations -- find valid collocations in inputstream 
# reads records COUNT<SPC>COLLOCATION from inputstream 
# writes records with existing collocations to stdout. 

valid-collocations() 
{ 
    #sort -k 2 -m - "$coll" |uniq -f 1 -D|accumulate 
    local delimiter="_" 
    ftr ' ' $delimiter | 
    join -t $delimiter -o 1.1 0 -1 2 -2 1 - /tmp/wordsets-helper-collocations | 
    ftr $delimiter ' ' 

} 

# ngrams MAX [MIN] 
# 
# Generates all n-grams (for each MIN <= n <= MAX, where MIN defaults to 2) 
# from inputstream 
# 
# reads word list, as generated by 
# 
#  $ words < text 
# 

# from stdin. For each WORD in wordlist, it writes MAX-1 records 
# 
# COUNT<TAB>WORD<SPC>SUCC_1<SPC> 
# COUNT<TAB>WORD<SPC>SUCC_1<SPC>SUCC_2<SPC> 
#       : 
# COUNT<TAB>WORD<SPC>SUCC_1<SPC>SUCC_2<SPC>...<SPC>SUCC_MAX-2 
# COUNT<TAB>WORD<SPC>SUCC_1<SPC>SUCC_2<SPC>...<SPC>SUCC_MAX-1 
# 
# to stdout, where word SUCC follows word WORD, and SUCC_n follows 
# SUCC_n-1 in input stream COUNT times. 

ngrams() 
{ 
    local max=$1 
    local min=${2:-2}; 
    awk 'FNR > 1 {print old " " $0} {old=$1}' | if (($max - 1 > 1)); then 
     if (($min <= 2)); then 
      tee >(ngrams $(($max - 1)) $(($min - 1))); 
     else 
      ngrams $(($max - 1)) $(($min - 1)); 
     fi; 
    else 
     cat; 
    fi 
} 

words() { 
    grep -Eo '\<([a-zA-Z]'"'"'?){'${1:-3}',}\>'|grep -v "[A-Z]" 
} 

parse-collocations() { 
    local freq=${1:-0} 
    local length=${2:-4} 

    words | ngrams $length | sort | uniq -c | 
    awk '$1 > '"$freq"' { print $0; }' | 
    valid-collocations 
} 

其中parse-collocation是實際使用的功能。它接受兩個可選參數:第一個設置要從結果中跳過的術語的最大循環頻率(默認爲0,即考慮所有術語)。第二個參數設置要搜索的最大術語長度。該函數將從標準輸入讀取文本並逐行將條款打印到標準輸出。它要求在/tmp/wordsets-helper-collocations(下載一個here)字典文件:

用例:

$ parse-collocation < some-text 

將是相當多的,你想要什麼。但是,如果你不想條款與字典相匹配,則可以使用這一個

$ words < some-text | ngrams 3 4 | sort | uniq -c |sort -nr 

ngrams的第一個參數設置的最低刑期長短,而它的第二個(可選)參數設置最大術語長度。

相關問題