from gensim.models import Word2Vec
sentences = [[\"cat\", \"say\", \"meow\"], [\"dog\", \"say\", \"woof\"]]
#数据也可以时分好词的文档,按行读取
#sentences=word2vec.Text8Corpus(\"分词后文件.txt\")
model = Word2Vec(sentences, min_count=1)
参考链接:
把Python内置列表当作输入很方便,但当输入量很大的时候,大会占用大量内存时。
Gensim需要输入一个可迭代的列表,可以是生成器,没有必要把一切东西都保存在内存中,提供一个语句,加载处理它,忘记它,加载另一个语句。
下面的代码的功能是对一个文件夹下的多个文件进行处理,这些文件已经被分词好了,如果还需要进一步预处理文件中的单词,如移除数字,提取命名实体… 所有的这些都可以在MySentences 迭代器内进行,保证给work2vec的是处理好的迭代器。
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
yield line.split()
sentences = MySentences(\'/some/directory\') # a memory-friendly iterator
model = gensim.models.Word2Vec(sentences)
对于单个文件,数据是保存在txt文件中的。每一行对应一个句子(已经分词,以空格隔开),我们可以直接用LineSentence把txt文件转为所需要的格式。
from gensim import Word2Vec
from gensim.Word2Vec import LineSentence
from gensim.test.utils import common_texts, get_tmpfile
# inp为输入语料
inp = \'wiki.zh.text.jian.seg.txt\'
# outp1 为输出模型
path = get_tmpfile(\"word2vec.model\") #创建临时文件
model = Word2Vec(LineSentence(inp), size=100, window=5, min_count=1)
model.save(\"word2vec.model\")
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



