辞書の単語を確認する方法を読み、辞書
を使用してテキスト ファイルを確認するというアイデアを思いつきました。私はpyenchantの指示を読みましたが、使用すればget_tokenizer
テキスト ファイル内のすべての辞書の単語を返すことができると思いました。
ここで私は立ち往生しています: 私は自分のプログラムに、辞書の単語のすべてのグループを段落の形で提供してもらいたいのです。ジャンク文字に遭遇するとすぐに、段落の区切りと見なし、そこから X 個の連続する単語が見つかるまですべてを無視します。
の順序でテキスト ファイルを読み取りfilename_nnn.txt
、解析し、書き込みparsed_filname_nnn.txt
ます。私はファイル操作を行うことに慣れていません。
私がこれまでに持っているもの:
import enchant
from enchant.tokenize import get_tokenizer, HTMLChunker
dictSentCheck = get_tokenizer("en_US")
sentCheck = raw_input("Check Sentense: ")
def check_dictionary():
outcome = dictCheck.check(wordCheck)
test = [w[0] for w in dictSentCheck(sentCheck)]
- - - サンプルテキスト - - -
2008 年 6 月 25 日水曜日、イングリッシュ クリケットはジンバブエとの関係を断ち切る text<void(0);><void(0);> <void(0);>電子メール <void(0);>この記事を電子メールで送信 あなたの名前: あなたの電子メール アドレス: 受信者の名前: 受信者の電子メール アドレス: <;>別の受信者を追加 あなたのコメント: メールを送信< ;ボイド(0);> このフォームを閉じる < http://ad.au.doubleclick.net/jump/sbs.com.au/worldnews;sz=300x250;tile=2;ord=123456789?> ; イングランドおよびウェールズ クリケット委員会 (ECB) は、ジンバブエとの関係をすべて停止し、来年のジンバブエのイングランド ツアーをキャンセルすると発表しました。
スクリプトは次を返す必要があります。
英国のクリケットは水曜日にジンバブエとの関係を断ち切る
イングランドおよびウェールズ クリケット委員会 (ECB) は、ジンバブエとの関係をすべて停止し、来年のジンバブエのイングランド ツアーをキャンセルすると発表しました。
abarnert の応答を受け入れました。以下は私の最終的なスクリプトです。これは非常に非効率的であり、一部をクリーンアップする必要があることに注意してください。また、私はずっと前に大学以来コーディングしていないという免責事項。
import enchant
from enchant.tokenize import get_tokenizer
import os
def clean_files():
os.chdir("TARGET_DIRECTORY")
for files in os.listdir("."):
#get the numbers out file names
file_number = files[files.rfind("_")+1:files.rfind(".")]
#Print status to screen
print "Working on file: ", files
#Read and process original file
original_file = open("name_"+file_number+".txt", "r+")
read_original_file = original_file.read();
#Start the parsing of the files
token_words = tokenize_words(read_original_file)
parse_result = ('\n'.join(split_on_angle_brackets(token_words,file_number)))
original_file.close()
#Commit changes to parsed file
parsed_file = open("name_"+file_number+"_parse.txt", "wb")
parsed_file.write(parse_result);
parsed_file.close()
def tokenize_words(file_words):
tokenized_sentences = get_tokenizer("en_US")
word_tokens = tokenized_sentences(file_words)
token_result = [w[0] for w in word_tokens]
return token_result
def check_dictionary(dict_word):
check_word = enchant.Dict("en_US")
validated_word = check_word.check(dict_word)
return validated_word
def split_on_angle_brackets(token_words, file_number):
para = []
bracket_stack = 0
ignored_words_per_file = open("name_"+file_number+"_ignored_words.txt", "wb")
for word in token_words:
if bracket_stack:
if word == 'gt':
bracket_stack -= 1
elif word == 'lt':
bracket_stack += 1
else:
if word == 'lt':
if len(para) >= 7:
yield ' '.join(para)
para = []
bracket_stack = 1
elif word != 'amp':
if check_dictionary(word) == True:
para.append(word)
#print "append ", word
else:
print "Ignored word: ", word
ignored_words_per_file.write(word + " \n")
if para:
yield ' '.join(para)
#Close opened files
ignored_words_per_file.close()
clean_files()