我有大約200MB的文本文件(rawtext.txt),並在文本文件(stopwords.txt)中包含停用詞列表。使用linux命令行刪除文本語料庫中的停用詞
I
a
about
an
are
as
at
be
by
com
for
...
我想刪除文本語料庫的禁用詞。但是如何?什麼是最快最簡單的方法?喜歡像sed或tr這樣的命令行。不想使用Python或NLTK。
有人可以幫忙嗎?我使用的是Mac OSX(而非Linux)
我有大約200MB的文本文件(rawtext.txt),並在文本文件(stopwords.txt)中包含停用詞列表。使用linux命令行刪除文本語料庫中的停用詞
I
a
about
an
are
as
at
be
by
com
for
...
我想刪除文本語料庫的禁用詞。但是如何?什麼是最快最簡單的方法?喜歡像sed或tr這樣的命令行。不想使用Python或NLTK。
有人可以幫忙嗎?我使用的是Mac OSX(而非Linux)
嘗試對GNU sed的:
sed -f <(sed 's/.*/s|\\b&\\b||g/' stopwords.txt) textwithstopwords.txt
如果要編輯 「就地」 增加-i選項來外sed的。
更新:
與你的sed和bash試試這個:
sed -f <(sed 's/.*/s|\\\<&\\\>||g/' stopwords.txt) textwithstopwords.txt
將您輸入的字每行格式,你可以用grep
其過濾:
tr -s '[:blank:]' '\n' < rawtext.txt | fgrep -vwf stopwords.txt
這樣你就不必建立一個任意大的正則表達式,如果你的停用詞表很大,這可能是一個問題。
我認爲'g'標誌可能出現在這裏錯誤的地方,因爲您正在替換整條線,並且在語料庫中停止詞可能有多處出現。 – potong
@potong:謝謝。我已經更新了我的答案。 – Cyrus
我檢查了這一行,它似乎不工作。停用詞根本不被替換。 – pbu