自然言語処理-特定の分野を対象としたWord2vecモデルのトレーニング

場合によっては、ドメイン指向の単語ベクトルモデルを作成する必要があります。
Googleは2006年以前にgooglenews-vectors-negative300.bin.gzモデルをトレーニングするときにGoogleニュースを使用していたため、NLPパイプラインによって処理されたテキスト内の単語の使用がその時点でGoogleニュースに見つからない場合は、Wordベクトルをカスタマイズできます。モデルの精度を向上させるため。さらに、一部の単語がGoogleニュースでまれである場合、またはこれらの単語が医療テキストやトランスクリプトなどの特定のフィールドで特定の使用法を持っている場合、特定のフィールドの単語ベクトルモデルもモデルの精度を向上させることができます。次に、カスタマイズされたWord2vecモデルをトレーニングする方法を示します。

from gensim.models.word2vec import Word2Vec
from gensim.models.word2vec import Word2Vec

# 数据
# gensimword2vec 模型接收的输入是一个句子列表,其中每个句子都已经切分为词条。
# 这样可以确保词向量模型不会学习到相邻句子中出现的无关词。
# 可以使用莫尔斯检测器(Detector Morse)产生这样的数据,在 pypi 和 GitHub 网站上均可获取,是一
# 个性能非常好(98%)的句子分段器,在《华尔街日报》多年的文章上进行的预训练。
token_list = [ ['to', 'provide', 'early', 'intervention/early', 'childhood', 'special',
             'education', 'services', 'to', 'eligible', 'children', 'and', 'their',
             'families'],
             ['essential', 'job', 'functions'],
             ['participate', 'as', 'a', 'transdisciplinary', 'team', 'member', 'to',
             'complete', 'educational', 'assessments', 'for']]

# Word2vec 模型训练参数
# 向量元素的数量(维度)表示词向量
num_features = 300
# Word2vec 模型中词的最低词频,如果语料库较小,可以将最低词频设置得小一点,
# 如果语料库较大,可以适当增大一点
min_word_count = 1
# 训练使用的 CPU 核数,如果要动态设置核数,可以导入 multiprocessing,
# 设置 num_workers = multiprocessing.cpu_count()
num_workers = 2
# 上下文窗口大小
window_size = 6
# 高频词条降采样率
subsampling = 1e-3

# Word2vec 模型实例化
model = Word2Vec(token_list, workers=num_workers, size=num_features, min_count=min_word_count,
                    window=window_size, sample=subsampling)

# 为了减少占用内存,丢弃神经网络中不需要的输出权重
# init_sims 方法将冻结模型,存储隐藏层的权重并丢弃用于预测共现词的输出权重,
# 一旦丢弃输出层的权重,以后将无法进一步训练模型
model.init_sims(replace=True)

# 保存已训练的模型
model_name = "my_domain_specific_word2vec_model"
model.save(model_name)

# 测试模型效果
model_name = "my_domain_specific_word2vec_model"
model = Word2Vec.load(model_name)
print(model.most_similar('early', topn=3))

おすすめ

転載: blog.csdn.net/fgg1234567890/article/details/112974769