2

我想使用gensim.corpora.wikicorpus. 我的最终目标是从中训练一个Word2Vec模型。

我有它的工作,但我对西班牙语的重音元音有疑问:á,é,í,ó,ú。

我想将它们标准化为 a, e, i, o, u。

我似乎在 gensim 中有一个deaccent函数,但我想在构建语料库时直接应用它。这可以做到吗?

这是一个工作示例:

from gensim.corpora import WikiCorpus
from gensim.models.word2vec import  Word2Vec
import logging

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s',
                level=logging.INFO)

# I would like to include here the normalization
corpus = WikiCorpus('/Users/jesusfbes/Desktop/eswiki-latest-pages-articles.xml.bz2', dictionary=False)


max_sentence = -1


def generate_lines():
    for index, text in enumerate(corpus.get_texts()):
        if index < max_sentence or max_sentence == -1:
            yield text
        else:
            break

model = Word2Vec(size=400, window=5, min_count=5)
model.build_vocab(generate_lines())
model.train(generate_lines(), chunksize=500)

model.save('mymodel')
4

1 回答 1

0

我想你应该做的是沿着这些思路:

from gensim.utils import deaccent

def generate_lines():
    for index, text in enumerate(corpus.get_texts()):
        if index < max_sentence or max_sentence == -1:
            yield deaccent(text)
        else:
            break

只要您有足够的 RAM 来存储结果并在 model.build_vocab() 和 model.train() 调用中重用它们,我也会将调用结果存储到 generate_lines() 以提高效率。

于 2017-05-10T08:50:04.903 回答