這可以是任何典型的類Unix系統(Python,Perl,awk,標準unix utils {sort,uniq}等)上可用的高級語言。希望能夠快速報告2MB文本文件的唯一條款總數。如何在不區分大小寫的情況下對純文本文件中的獨特術語進行計數?
我只需要這個快速的理智檢查,所以它不需要很好的設計。請記住,大小寫不敏感。
非常感謝你們。
備註:如果您使用Python,請不要使用純版本3代碼。我使用的系統只有2.4.4。
這可以是任何典型的類Unix系統(Python,Perl,awk,標準unix utils {sort,uniq}等)上可用的高級語言。希望能夠快速報告2MB文本文件的唯一條款總數。如何在不區分大小寫的情況下對純文本文件中的獨特術語進行計數?
我只需要這個快速的理智檢查,所以它不需要很好的設計。請記住,大小寫不敏感。
非常感謝你們。
備註:如果您使用Python,請不要使用純版本3代碼。我使用的系統只有2.4.4。
在Python 2.4(可能它適用於早期的系統以及):
#! /usr/bin/python2.4
import sys
h = set()
for line in sys.stdin.xreadlines():
for term in line.split():
h.add(term)
print len(h)
在Perl:
$ perl -ne 'for (split(" ", $_)) { $H{$_} = 1 } END { print scalar(keys%H), "\n" }' <file.txt
使用bash/UNIX命令:
sed -e 's/[[:space:]]\+/\n/g' $FILE | sort -fu | wc -l
只使用標準的Unix工具:
< somefile tr 'A-Z[:blank:][:punct:]' 'a-z\n' | sort | uniq -c
如果您在沒有Gnu tr
的系統上,則需要將「[:blank:][:punct:]
」替換爲您希望用作詞語分隔符的所有空格和標點符號的列表,而不是部分一個詞,例如,「\t.,;
」。
如果您希望輸出按頻率降序排序,您可以在此末尾附加「| sort -r -n
」。
請注意,這也會產生不相關的空白標記數量;如果您擔心這一點,在tr
之後,您可以使用sed過濾出空行。
在Perl:
my %words;
while (<>) {
map { $words{lc $_} = 1 } split /\s/);
}
print scalar keys %words, "\n";
只需(52衝程):
perl -nE'@w{map lc,split/\W+/}=();END{say 0+keys%w}'
對於舊的perl版本(55個衝程):
perl -lne'@w{map lc,split/\W+/}=();END{print 0+keys%w}'
這裏是一個Perl單行:
perl -lne '$h{lc $_}++ for split /[\s.,]+/; END{print scalar keys %h}' file.txt
,還是列出每個項目的計數:
perl -lne '$h{lc $_}++ for split /[\s.,]+/; END{printf "%-12s %d\n", $_, $h{$_} for sort keys %h}' file.txt
這使得試圖處理標點符號,使「富」。用「foo」來計算,而「不」被視爲一個單詞,但您可以調整正則表達式以適應您的需求。
這是一個awk oneliner。
$ gawk -v RS='[[:space:]]' 'NF&&!a[toupper($0)]++{i++}END{print i}' somefile
較短版本在Python:
print len(set(w.lower() for w in open('filename.dat').read().split()))
讀取整個文件到內存中,使用空白分割成單詞,將每個字爲小寫,創建(唯一的)從小寫字設定,對它們進行計數並打印輸出。
python -c "print len(set(w.lower() for w in open('filename.dat').read().split()))"
我有時想,人是多麼害怕是蟒蛇性能:使用一個襯墊
也是可能的。我曾經寫過一個腳本,其中包含4GB的dicom圖像,將它們轉換成PNG,將這些PNG轉換爲scipy數組,並將解析後的分割文件轉換爲scipy數組,並將這些內容保存到磁盤 - 從而形成一個32GB的整數山。 完成不到10分鐘。 – bayer 2009-05-27 08:09:40
你的問題到底是什麼?你是否試圖自己解決這個問題?如果是,你遇到了什麼問題?如果不是,爲什麼不呢? – innaM 2009-05-27 08:49:31