2016-09-21 4 views
4

In GENSIM, wenn ich eine Zeichenfolge als Eingabe für die Ausbildung doc2vec Modell geben, bekomme ich diesen Fehler:doc2vec - Eingabeformat für doc2vec Ausbildung und infer_vector() in Python

Typeerror ('don \' t wissen, wie uri% s'% repr (uri) zu handhaben)

ich auf diese Frage verweisen Doc2vec : TaggedLineDocument() aber immer noch einen Zweifel über das Eingabeformat habe.

documents = TaggedLineDocument('myfile.txt')

Sollten die MYFILE.TXT haben Token als Liste von Listen oder separate Liste in jeder Zeile für jedes Dokument oder einen String?

For eg - Ich habe 2 Dokumente.

Doc 1: Maschinelles Lernen ist ein Teilgebiet der Informatik, das sich aus dem Studium der Mustererkennung entwickelt hat.

Doc 2: Arthur Samuel definiert maschinelles Lernen als "Lernfeld, das Computern die Fähigkeit zum Lernen gibt".

Also, wie sollte die myFile.txt aussehen?

Fall 1: einfacher Text jedes Dokuments in jeder Zeile

Maschinelles Lernen ist ein Teilgebiet der Informatik, die aus dem Studium der Mustererkennung entwickelt

Arthur Samuel definiert maschinelles Lernen als Raum der Studie, dass gibt Computer die Fähigkeit

Fall 2 zu lernen: eine Liste von Listen mit Token jedes Dokument

[ ["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"] ] 

Fall 3: Liste von Tokens jedes Dokument in einer separaten Zeile

["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"] 

Und wenn ich es auf den Testdaten leite, was soll das Format des Satzes sein, die ich will, vorherzusagen der Doc-Vektor für? Sollte es Fall 1 oder Fall 2 unten oder etwas anderes sein?

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

Sollte die testSentence sein:

Fall 1: string

testSentence = "Machine learning is an evolving field" 

Fall 2: Liste von Tokens

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

Antwort

3

TaggedLineDocument ist eine Convenience-Klasse, die ihr erwartet Quelldatei (oder dateiähnliches Objekt) als Leerzeichen d Tokens, einer pro Zeile. (Das heißt, was Sie in Ihrer ersten Frage als "Fall 1" bezeichnen.

)

Aber Sie können Ihre eigene iterable Objekt schreiben zu füttern Doc2Vec als documents Korpus GENSIM, solange dieser Korpus (1) iterably-returns next() Objekte, die wie TaggedDocument, haben words und tags Listen; und (2) kann mehrfach durchlaufen werden, für die mehrfachen Durchgänge Doc2Vec erfordert sowohl die anfängliche Vokabel-Vermessung als auch dann iter Trainingspässe.

Die Methode infer_vector() nimmt Listen-of-Token, ähnlich dem words Attribut der einzelnen TaggedDocument ähnliche Objekte. (Das heißt, was Sie in Ihrer zweiten Frage als "Fall 2" bezeichnen.)

Verwandte Themen