简介

 
Gensim是一个开源的Python库,专门用于处理文本数据和主题建模。
它提供了强大的工具来实现Word2Vec等词嵌入模型。
    

 
pip install gensim
    

中文举例

 
import jieba
from gensim.models import Word2Vec

text = "我爱自然语言处理,自然语言处理很有趣。"

# 使用jieba进行分词
words = list(jieba.cut(text))

# 将分词结果转换为列表形式,因为Word2Vec模型需要以句子(单词列表)的形式输入
sentences = [words]  #[['我', '爱', '自然语言', '处理', ',', '自然语言', '处理', '很', '有趣', '。']]
    

Word2Vec参数

 
vector_size:词向量的维度,这里设置为100。
window:上下文窗口大小,表示当前单词和周围单词的关联范围,这里设置为5。
min_count:单词最少出现的次数,小于该次数的单词会被忽略,这里设置为1。
workers:训练时使用的线程数,这里设置为4。
    

 
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

vector = model.wv['自然语言']
print(vector)

 
    [-8.6196875e-03  3.6657380e-03  5.1898835e-03  5.7419385e-03
    7.4669183e-03 -6.1676754e-03  1.1056137e-03  6.0472824e-03
   -2.8400505e-03 -6.1735227e-03 -4.1022300e-04 -8.3689485e-03
   -5.6000124e-03  7.1045388e-03  3.3525396e-03  7.2256695e-03
    6.8002474e-03  7.5307419e-03 -3.7891543e-03 -5.6180597e-04
    2.3483764e-03 -4.5190323e-03  8.3887316e-03 -9.8581640e-03
    6.7646410e-03  2.9144168e-03 -4.9328315e-03  4.3981876e-03
   -1.7395747e-03  6.7113843e-03  9.9648498e-03 -4.3624435e-03
   -5.9933780e-04 -5.6956373e-03  3.8508223e-03  2.7866268e-03
    6.8910765e-03  6.1010956e-03  9.5384968e-03  9.2734173e-03
    7.8980681e-03 -6.9895042e-03 -9.1558648e-03 -3.5575271e-04
   -3.0998408e-03  7.8943167e-03  5.9385742e-03 -1.5456629e-03
    1.5109634e-03  1.7900408e-03  7.8175711e-03 -9.5101865e-03
   -2.0553112e-04  3.4691966e-03 -9.3897223e-04  8.3817719e-03
    9.0107834e-03  6.5365066e-03 -7.1162102e-04  7.7104042e-03
   -8.5343346e-03  3.2071066e-03 -4.6379971e-03 -5.0889552e-03
    3.5896183e-03  5.3703394e-03  7.7695143e-03 -5.7665063e-03
    7.4333609e-03  6.6254963e-03 -3.7098003e-03 -8.7456414e-03
    5.4374672e-03  6.5097557e-03 -7.8755023e-04 -6.7098560e-03
   -7.0859254e-03 -2.4970602e-03  5.1432536e-03 -3.6652375e-03
   -9.3700597e-03  3.8267397e-03  4.8844791e-03 -6.4285635e-03
    1.2085581e-03 -2.0748770e-03  2.4403334e-05 -9.8835090e-03
    2.6920044e-03 -4.7501065e-03  1.0876465e-03 -1.5762246e-03
    2.1966731e-03 -7.8815762e-03 -2.7171839e-03  2.6631986e-03
    5.3466819e-03 -2.3915148e-03 -9.5100943e-03  4.5058788e-03]

    

 
len(vector)  # 100
    

 

    

 
import jieba
from gensim.models import Word2Vec

# 示例文本
texts = ["我喜欢学习自然语言处理", "机器学习和深度学习是人工智能的一部分", "自然语言处理很有意思"]

# 使用jieba进行分词
cut_texts = [list(jieba.cut(text)) for text in texts]

# 训练Word2Vec模型
model = Word2Vec(cut_texts, vector_size=100, window=5, min_count=1, workers=4)

# 查找与'学习'最相似的词
similar_words = model.wv.most_similar('学习')

print(similar_words)

    

 
[('深度', 0.21617145836353302), ('喜欢', 0.0931011214852333), ('人工智能', 0.09291722625494003), ('机器', 0.07963486760854721), ('和', 0.06285078078508377), ('是', 0.027064507827162743), ('的', 0.01613466814160347), ('处理', -0.010839181020855904), ('很', -0.027750367298722267), ('我', -0.041253406554460526)]

按相似程序降序排序,可以看到,前五个词都是喜欢附近出现过的词,离“学习”这个单词的距离较近
    

 

    

 


 

  

 


参考