私はテキストデータのデータベースを持っていて、データベース全体から単語数を得るための小さなカウンタを作成しました。最も一般的な言葉は通常の容疑者( 'is'、 'and'など)であり、最も一般的なものは、emojis、ドル値、タイプミスなどがあります。私はテキストから単語を削除して、最も一般的ではない、あるいは最も一般的でない値をベクトル化できるようにしたいと思います。しかし、非常に珍しい/異常な単語のリストは長いおよそ60万アイテムです。多くのストップワードでテキストを高速化する
テキストのトークン化ちょうど一枚を例にとると、意味stopwords = []
for key, value in ctr.items(): #ctr is a Counter() object of words in the entire corpus of text and their counts
if value < 4:
words += 1
stopwords.append(key)
print (len(stopwords))
643392
:用分にわたり、
start = time.time()
[word for word in word_tokenize(stemmer.stem(dataframe.text[20])) if word not in stopwords]
end = time.time()
print (end - start)
79.92309927940369
ので、一枚のテキスト。清掃してベクトル化する記事は約16万件あります。
ストップワード除去のためのベクター化された機能はありますか?ストップワードを扱うのを見てきた唯一の方法は、問題を繰り返し解決します。このレートでは、このテキストの消去には約3ヶ月かかります。
いつもありがとうございました。
マルチスレッドが実行時間を改善する可能性があるのは間違いありません。別のことは、あなたのボトルネックがどこにあるのかを良く知るためにMCVEを持つことです。https://stackoverflow.com/help/mcve – Adonis
ストップワードのリストが非常に大きいときにMCVEを提供する方法はありますか?これは、Dropboxのリンクなどを作成するだけのシナリオですか? – snapcrack
私はそれが助けになるかどうかは分かりませんが、少し速いかもしれません。https://github.com/alvations/earthy/blob/master/FAQ.md#what-else-can-earthy-do – alvas