将由文章组成的语料库标记为句子Python

时间:2016-09-01 15:27:12

标签: python deep-learning gensim word2vec

我想用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

有什么建议吗?

欢呼声

1 个答案:

答案 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选择正确的参数可以产生巨大的差异。