私は、多数のテキストファイルから一意の単語を解析するプロジェクトに取り組んでいます。ファイル処理を停止しましたが、解析手順を改良しようとしています。各ファイルには、ライブシステムで正規表現を使用してキャッチしている特定のフレーズで終わる特定のテキストセグメントがあります。
パーサーは各行をウォークスルーし、3つの基準に対して各単語をチェックする必要があります。
- 2文字より長い
- 事前定義された辞書セットにありません
dict_file
- まだ単語リストにありません
結果は2D配列になり、各行にはファイルごとの一意の単語のリストが表示されます。これは、.writerow(foo)
各ファイルが処理された後、メソッドを使用してCSVファイルに書き込まれます。
私の作業コードは以下のとおりですが、遅くて扱いにくいですが、何が欠けていますか?
私の本番システムは、デフォルトのモジュールだけで2.5.1を実行しているため(NLTKは使用できません)、2.7以降にアップグレードすることはできません。
def process(line):
line_strip = line.strip()
return line_strip.translate(punct, string.punctuation)
# Directory walking and initialization here
report_set = set()
with open(fullpath, 'r') as report:
for line in report:
# Strip out the CR/LF and punctuation from the input line
line_check = process(line)
if line_check == "FOOTNOTES":
break
for word in line_check.split():
word_check = word.lower()
if ((word_check not in report_set) and (word_check not in dict_file)
and (len(word) > 2)):
report_set.append(word_check)
report_list = list(report_set)
編集:stevehaの推奨事項に基づいてコードを更新しました。