は、だから私は信じていたが、この問題の背後にある主な理由は、それぞれの場合に異なるのpython gensimの例外TypeError:Unicodeに強制変換:必要文字列またはバッファ、リストはこれが(特にstackoverflowの上の)多くの類似の質問に共通の問題であるにもかかわらず
収量操作は、各ファイル を読み込むの最後に発生し、それはそれらをもたらすその後、各ファイルから21個のファイル、エキスのドキュメントのリストを読み込み、私は(以下検索コード)をreadCorpus
という名前のメソッドを持っている私の場合
別の方法がです(以下のコードを見つける)。この方法の主な目的は、そのコーパスをアップロードすることです。
明らかに歩留りを使用する主な理由は、コーパスが非常に大きくなる可能性があることと、一度だけ読む必要があることです。
私はラインself.readCorpus()])
で
TypeError: coercing to Unicode: need string or buffer, list found
errosが発生したの下にエラーが表示さuploadCorpus
私はメソッドを実行すると。私はリストを紛失されたときにそれが起こることを理解するようになった同様の問題を読む
は..私はdocs for docs in self.readCorpus()])
にここで質問の行をuplateしようとしたが、私は同じ問題
私のコード(uploadCorpus)で終了しました
def uploadCorpus(self):
#convert docs to corpus
print "uploading"
utils.upload_chunked(
self.service,
[{'id': 'doc_%i' % num, 'tokens': utils.simple_preprocess(doc)}
for num, doc in enumerate([
self.readCorpus()])
],
chunksize=1000) # send 1k docs at a time
マイコードreadCorpus()
def readCorpus(self):
path = '../data/reuters'
doc=''
docs = []
docStart=False
fileCount=0
print 'Reading Corpus'
for name in glob.glob(os.path.join(path, '*.sgm')):
print 'Reading File| ' + name
docCount=0
for line in open(name):
if(len(re.findall(r'<BODY>', line)) > 0):
docStart = True
pattern = re.search(r'<BODY>.*', line)
doc+= pattern.group()[6:]
if(len(re.findall(r'</BODY>\w*', line)) > 0):
docStart = False
docs.append(doc)
doc=''
docCount+=1
continue
#break
if(docStart):
doc += line
fileCount+=1
print 'docuemnt[%d][%d]'%(fileCount,docCount)
yield docs
docs = []
を以下のように変更する必要があります。これはあなたのリストを文字列に変換し、アップロードに互換性を持たせます。 – kpie
@kpie私はまだ同じエラーがあります –