2017-11-28 5 views
0

私はチャットボットをトレーニングしようとしています。データのほとんどはテキストファイルです。テキストファイルからPython Chatterbot "Errno 22"

Matt said you have a "shit load" of dining dollars. I have almost none so if you're willing to sell, I'm willing to buy. 

が、会話ボットコーパスは、ボットを養成しようとすると、それは上記のように読み取ります:

私が引っ張っ

'Matt said you have a "shit load" of dining dollars\\ I have almost none so if you\'re willing to sell, I\'m willing to buy\\\n' 

私はこの問題を解決するにはどうすればよいですか?

これは私のコードです:

def train_from_text(): 
    #chatbot.set_trainer(ListTrainer) 
    directory = basedir + "Text Trainers" 
    files = find_files_in_directory(directory) 
    for file in files: 
     conversation = [] 
     file_name = directory+"/"+file 
     with open(file_name, 'r') as to_read: 
      for line in to_read: 
       conversation.append(line) 
     chatbot.train(conversation) 

は宣誓、私は与えられたそのデータを言い訳してください。

編集:全エラー

Traceback (most recent call last): 
    File "E:/Jason Chatterbot/Jason Chat.py", line 102, in <module> 
control() 
    File "E:/Jason Chatterbot/Jason Chat.py", line 96, in control 
train_from_text() 
    File "E:/Jason Chatterbot/Jason Chat.py", line 58, in train_from_text 
chatbot.train(conversation) 
    File "C:\Python27\lib\site-packages\chatterbot\trainers.py", line 119, in train 
corpora = self.corpus.load_corpus(corpus_path) 
    File "C:\Python27\lib\site-packages\chatterbot_corpus\corpus.py", line 98, in load_corpus 
corpus_data = self.read_corpus(file_path) 
    File "C:\Python27\lib\site-packages\chatterbot_corpus\corpus.py", line 63, in read_corpus 
with io.open(file_name, encoding='utf-8') as data_file: 
IOError: [Errno 22] Invalid argument: 'Matt said you have a "shit load" of dining dollars\\ I have almost none so if you\'re willing to sell, I\'m willing to buy\\\r\n' 
+0

すべての '/'を取り除きたいですか? –

答えて

0

データのより大きなサブセットを見ずに、それは「(エスケープ単一引用符\)と()」単一引用符を置き換えているように、思える、実際の改行文字、とエスケープされた改行(\ n)と二重バックスラッシュ(\)のピリオド

単純な文字列置換は、データがどの程度悪くなっているかに応じて修正するかもしれません。私たちは、基本的には自動的に行われているそれらの置換を逆転しようとしている

conversation.append(line.replace("\\'","'").replace('\\\\','.').replace("\\n","\n")) 

conversation.append(line) 

を変更してみてください。

+0

私はまだ同じエラーが出ています(上記に貼り付け、コメントが長すぎます) – TobyTobyo

+0

これはどういうわけか、文字列がファイルから読み込まれていて、プログラムのどこかでその文字列をファイルとして開こうとしているようです。 io.openの引数が無効です。ファイルを開く前にprint文を追加し、ファイル名を "file_name"と表示した後に開きます。 – rickjerrity

+0

これは私が "Mattが"食べ物のたわごと "を持っていると言ったところですドル\\私は売りたいと思っているなら、ほとんど\\ \\私は購入する意思\\\ n '"からほとんど何も持っていない。私はどこにでもprintステートメントを追加しましたが、chatterbotライブラリのlisttrainer関数自体からエラーが発生しているようですが、どこから発生したのか正確に把握することはできません。各ステップで修正を試しても問題は解決しませんが、私はまだ素敵なエラーを受け取ります – TobyTobyo

関連する問題