2016-09-21 30 views
4

でgensimで、私はトレーニングdoc2vecモデルのための入力として文字列を与えるとき、私はこのエラーを取得:doc2vec - doc2vec訓練とinfer_vectorのための入力形式()のpython

はTypeError(「ドン\」トンノウハウURI%s'は%のrepr(URI)をどのように扱うか)

私はこの質問Doc2vec : TaggedLineDocument() 呼ばそれでも入力フォーマットについて疑問を持っています。

documents = TaggedLineDocument('myfile.txt')

MYFILE.TXTは、各文書または文字列の各行にあるリストのリストまたは別のリストなどのトークンを持っているべきですか?

For eg - 私は2つのドキュメントを持っています。

Doc 1:機械学習は、パターン認識の研究から進化したコンピュータサイエンスのサブフィールドです。

Doc 2:Arthur Samuelは機械学習を「コンピュータに学習能力を与える学習の場」と定義しました。

だから、myFile.txtはどのように見えるのですか?

ケース1:各行の各文書の単純なテキスト

機械学習が

アーサーサムエルはその研究のフィールドとして機械学習を定義したパターン認識の研究から発展したコンピュータサイエンスのサブフィールドであります各文書

[ ["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"]

のトークンを持つリストのリスト:コンピューターに

ケース2を学習する機能を提供します

["Arthur", "Samuel", "defined", "machine", "learning", "as", "a", "Field", "of", "study", "that", "gives", "computers" ,"the", "ability", "to", "learn"] ] 

ケース3:別の行の各文書のトークンのリスト

["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"] 

["Arthur", "Samuel", "defined", "machine", "learning", "as", "a", "Field", "of", "study", "that", "gives", "computers" ,"the", "ability", "to", "learn"] 

そして、私は、テストデータ上でそれを実行しているとき、何が私が予測したい文の形式でなければなりませんdocベクトルは?下のケース1またはケース2のようなものか、それとも別のものか?

model.infer_vector(testSentence, alpha=start_alpha, steps=infer_epoch)

testSentenceは次のようになります。

ケース1:文字列

testSentence = "Machine learning is an evolving field" 

ケース2:トークンのリスト

testSentence = ["Machine", "learning", "is", "an", "evolving", "field"] 

答えて

3

TaggedLineDocumentはそのを期待する便利なクラスでありますスペース区切りとなるソースファイル(またはファイルライクなオブジェクト) dトークン、1行に1つ。 (つまり、あなたの第1の質問であなたが「ケース1」と呼ぶもの)。)

しかし、あなたはiterably-リターン(1)限り、このコーパスとして、TaggedDocumentのように、wordstagsリストを持って、next()オブジェクトをdocumentsコーパスとしてDoc2Vecをgensimする養うために、独自の反復可能なオブジェクトを書き込むことができます。 (2)複数回にわたって繰り返すことができます。複数のパスの場合、Doc2Vecは最初の語彙調査とその後iterトレーニングパスの両方を必要とします。

infer_vector()メソッドは、個々のTaggedDocumentのようなオブジェクトのwords属性と同様のトークンのリストを取ります。 (つまり、2番目の質問で「ケース2」と呼ぶもの)