私はそれらのテキストファイルを読み込み、それらにラベルを付ける2つのディレクトリがありますが、TaggedDocument経由でこれを行う方法がわかりません、TaggedDocument([Strings]、[Labels])として機能すると思っていましたが、明らかに仕事をしている。これは私のコードです:どのようにgensimでTaggedDocumentを使用しますか?
from gensim import models
from gensim.models.doc2vec import TaggedDocument
import utilities as util
import os
from sklearn import svm
from nltk.tokenize import sent_tokenize
CogPath = "./FixedCog/"
NotCogPath = "./FixedNotCog/"
SamplePath ="./Sample/"
docs = []
tags = []
CogList = [p for p in os.listdir(CogPath) if p.endswith('.txt')]
NotCogList = [p for p in os.listdir(NotCogPath) if p.endswith('.txt')]
SampleList = [p for p in os.listdir(SamplePath) if p.endswith('.txt')]
for doc in CogList:
str = open(CogPath+doc,'r').read().decode("utf-8")
docs.append(str)
print docs
tags.append(doc)
print "###########"
print tags
print "!!!!!!!!!!!"
for doc in NotCogList:
str = open(NotCogPath+doc,'r').read().decode("utf-8")
docs.append(str)
tags.append(doc)
for doc in SampleList:
str = open(SamplePath + doc, 'r').read().decode("utf-8")
docs.append(str)
tags.append(doc)
T = TaggedDocument(docs,tags)
model = models.Doc2Vec(T,alpha=.025, min_alpha=.025, min_count=1,size=50)
、これは私が取得エラーです:
Traceback (most recent call last):
File "/home/farhood/PycharmProjects/word2vec_prj/doc2vec.py", line 34, in <module>
model = models.Doc2Vec(T,alpha=.025, min_alpha=.025, min_count=1,size=50)
File "/home/farhood/anaconda2/lib/python2.7/site-packages/gensim/models/doc2vec.py", line 635, in __init__
self.build_vocab(documents, trim_rule=trim_rule)
File "/home/farhood/anaconda2/lib/python2.7/site-packages/gensim/models/word2vec.py", line 544, in build_vocab
self.scan_vocab(sentences, progress_per=progress_per, trim_rule=trim_rule) # initial survey
File "/home/farhood/anaconda2/lib/python2.7/site-packages/gensim/models/doc2vec.py", line 674, in scan_vocab
if isinstance(document.words, string_types):
AttributeError: 'list' object has no attribute 'words'
あなたの主な質問とは別に、「min_alpha」の終わりを「alpha」と同じ値にすることは、あなたのトレーニングが適切な確率的勾配降下をしていないことを意味します。また、「min_count = 1」はWord2Vec/Doc2Vecトレーニングで役立つことはまれです。このような珍しい単語を保持することは、トレーニングに時間がかかり、残りの単語vecs/doc-vecsの品質を妨害する傾向があります。 – gojomo
min_alpha'、私はこのコードに続いて、サンプルコードからそれをコピーした 'について: '範囲のエポックのために(10): model.train(ドキュメント) model.alpha - = 0.002 #学習率を下げる model.min_alpha = model.alpha#は学習率を固定し、減衰はない ' と約「min_count」について:私のデータセットは非常に限られていて、それほど頻繁ではない意味では、私はまた、ほとんどのストップワードと頻繁な毎日の単語をフィルタリングしました。 – Farhood
これは悪いサンプルです。 Doc2Vecインスタンスを作成するときにコーパスを渡していると、自動的にすべてのトレーニングパスが実行され、学習率が 'alpha'から' min_alpha'まで自動的に管理されます。あなた自身。 (そして、あなたがそうしたのであれば、他の特質がなくても表示されているように、最新のgensimのバージョンは間違いがあるので、間違いがあります)。デフォルトの 'alpha' /' min_alpha'です。 – gojomo