我想用Python分析我的第一个深度学习模型,为了做到这一点,我必须首先将我的语料库(8807篇文章)分成句子。我的语料库建立如下:
treat ndigits=None as resolve
Version/Type single-argument call round(n, None)
---------- --------------- -----------
3.4/float No TypeError
3.4/long No TypeError
3.5/float Yes round(n)
3.5/long No TypeError
我正在尝试使用库## Libraries to download
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from gensim import corpora, models
import gensim
import json
import nltk
import re
import pandas
appended_data = []
#for i in range(20014,2016):
# df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
# appended_data.append(df0)
for i in range(2005,2016):
if i > 2013:
df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
appended_data.append(df0)
df1 = pandas.DataFrame([json.loads(l) for l in open('Scot_%d.json' % i)])
df2 = pandas.DataFrame([json.loads(l) for l in open('APJ_%d.json' % i)])
df3 = pandas.DataFrame([json.loads(l) for l in open('TH500_%d.json' % i)])
df4 = pandas.DataFrame([json.loads(l) for l in open('DRSM_%d.json' % i)])
appended_data.append(df1)
appended_data.append(df2)
appended_data.append(df3)
appended_data.append(df4)
appended_data = pandas.concat(appended_data)
# doc_set = df1.body
doc_set = appended_data.body
中的Word2Vec.load_word2vec_format
函数,但我必须先将语料库(gensim.models
)拆分成句子。
doc_set
有什么建议吗?
欢呼声
答案 0 :(得分:1)
因此,Gensim的Word2Vec
需要此格式用于其培训输入:sentences = [['first', 'sentence'], ['second', 'sentence']]
。
我认为你的文件包含多个句子。您应该首先按句子分割,您可以使用nltk进行分割(您可能需要先下载模型)。然后对每个句子进行标记,并将所有内容放在一个列表中。
sent_detector = nltk.data.load('tokenizers/punkt/english.pickle')
sentenized = doc_set.body.apply(sent_detector.tokenize)
sentences = itertools.chain.from_iterable(sentenized.tolist()) # just to flatten
result = []
for sent in sentences:
result += [nltk.word_tokenize(sent)]
gensim.models.Word2Vec(result)
不幸的是,我对Pandas以“pandastic”方式执行所有操作还不够好。
非常注意Word2Vec
选择正确的参数可以产生巨大的差异。