我正在尝试使用 Word2vec 的 python 包装器。我有一个词嵌入或一组词,可以在下面看到,我试图从中确定哪两个词彼此最相似。
我怎样才能做到这一点?
['建筑师'、'护士'、'外科医生'、'祖母'、'爸爸']
大家好,有人可以帮我看一下使用 python 的 LDA2Vec 的工作示例吗?请假设数据框 df 具有包含文本数据的“注释”列
我正在尝试实现“cemoody/lda2vec”github 示例,但遇到多个问题 - 1. 如何安装 spacy 包?2.导入错误:无法从“lda2vec”导入名称“预处理” 3.导入错误:无法从“lda2vec”导入名称“LDA2Vec”
不知道我在这里缺少什么。
任何帮助/链接将非常感激
我面临着一个二元预测任务,并且有一组特征,其中所有特征都是分类的。因此,一个关键的挑战是将这些分类特征编码为数字,我一直在寻找聪明的方法来做到这一点。我偶然发现了 word2vec,它主要用于 NLP,但我想知道是否可以使用它来编码我的变量,即简单地将神经网络的权重作为编码特征。
然而,我不确定这是否是一个好主意,因为在我的例子中,作为 word2vec 中的输入特征的上下文单词或多或少是随机的,这与 word2vec 最初设计的真实句子形成鲜明对比。
对此大家有什么意见、想法、建议吗?
nlp machine-learning categorical-data word2vec feature-engineering
我正在使用 Word2Vec 并使用 wiki 训练模型来给出最相似的单词。我之前运行过这个并且它有效,但是现在即使在重新运行整个程序后它也会给我这个错误。我尝试起飞 return_path=True,但仍然遇到同样的错误
print(api.load('glove-wiki-gigaword-50', return_path=True))
model.most_similar("glass")
Run Code Online (Sandbox Code Playgroud)
#错误:
/Users/me/gensim-data/glove-wiki-gigaword-50/glove-wiki-gigaword-50.gz
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-153-3bf32168d154> in <module>
1 print(api.load('glove-wiki-gigaword-50', return_path=True))
----> 2 model.most_similar("glass")
AttributeError: 'Word2Vec' object has no attribute 'most_similar'
Run Code Online (Sandbox Code Playgroud)
#MODEL这是我用的模型
print(
'%s (%d records): %s' % (
model_name,
model_data.get('num_records', -1),
model_data['description'][:40] + '...',
)
)
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的 gensim 下载和输出
!python -m pip install -U gensim
Run Code Online (Sandbox Code Playgroud)
输出:
已满足要求:./opt/anaconda3/lib/python3.8/site-packages (4.0.1) 中的 gensim
已满足要求: ./opt/anaconda3/lib/python3.8/site-packages 中的 numpy>=1.11.3 (来自 gensim)(1.20.1)
已满足要求:smart-open>=1.8.1 in ./opt/anaconda3/lib/python3.8/site-packages (来自 gensim) (5.1.0)
已满足要求:./opt/anaconda3/lib/python3.8/site-packages 中的 scipy>=0.18.1 …
看起来get_latest_training_loss函数fasttext只返回0。gensim 4.1.0和4.0.0都不起作用。
from gensim.models.callbacks import CallbackAny2Vec
from pprint import pprint as print
from gensim.models.fasttext import FastText
from gensim.test.utils import datapath
class callback(CallbackAny2Vec):
'''Callback to print loss after each epoch.'''
def __init__(self):
self.epoch = 0
def on_epoch_end(self, model):
loss = model.get_latest_training_loss()
print('Loss after epoch {}: {}'.format(self.epoch, loss))
self.epoch += 1
# Set file names for train and test data
corpus_file = datapath('lee_background.cor')
model = FastText(vector_size=100, callbacks=[callback()])
# build the vocabulary
model.build_vocab(corpus_file=corpus_file)
# train …Run Code Online (Sandbox Code Playgroud) 按照gensim word2vec 嵌入教程,我训练了一个简单的 word2vec 模型:
from gensim.test.utils import common_texts
from gensim.models import Word2Vec
model = Word2Vec(sentences=common_texts, size=100, window=5, min_count=1, workers=4)
model.save("/content/word2vec.model")
Run Code Online (Sandbox Code Playgroud)
我想使用 TensorBoard 中的嵌入投影仪将其可视化。gensim 文档中有另一个简单的教程。我在 Colab 中做了以下操作:
!python3 -m gensim.scripts.word2vec2tensor -i /content/word2vec.model -o /content/my_model
Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.7/dist-packages/gensim/scripts/word2vec2tensor.py", line 94, in <module>
word2vec2tensor(args.input, args.output, args.binary)
File "/usr/local/lib/python3.7/dist-packages/gensim/scripts/word2vec2tensor.py", line 68, in word2vec2tensor
model = gensim.models.KeyedVectors.load_word2vec_format(word2vec_model_path, binary=binary) …Run Code Online (Sandbox Code Playgroud) 我尝试使用 elasticsearch python 客户端执行此查询:
curl -X GET "localhost:9200/articles/_knn_search" -H 'Content-Type: application/json' -d '
{
"knn": {
"field": "title_vector",
"query_vector": [-0.01807806, 0.024579186,...],
"k": 10,
"num_candidates": 100
},
"_source": ["title", "category"]
}
'
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我谢谢。
编辑:对于elasticsearch python客户端> 8.0,有一个名为knn_search的新函数,因此我们可以非常轻松地运行knn_search:
query = {
"field": "title_vector",
"query_vector": [-0.01807806, 0.024579186,...],
"k": 10,
"num_candidates": 100
}
es = Elasticsearch(request_timeout=600, hosts='http://localhost:9200')
res = es.knn_search(index="index_name", knn=query, source=["filed1", "field2"])
Run Code Online (Sandbox Code Playgroud) 我试图逐步训练gensim产生的word2vec模型。但是我发现词汇量没有增加,只有word2vec模型的权重被更新。但是我需要同时更新词汇量和模型大小。
#Load data
sentences = []
....................
#Training
model = Word2Vec(sentences, size=100)
model.save("modelbygensim.txt")
model.save_word2vec_format("modelbygensim_text.txt")
#Incremental Training
model = Word2Vec.load('modelbygensim.txt')
model.train(sentences)
model.save("modelbygensim_incremental.txt")
model.save_word2vec_format("modelbygensim_text_incremental.txt")
Run Code Online (Sandbox Code Playgroud) 我正在使用WMD计算句子之间的相似度。例如:
distance = model.wmdistance(sentence_obama, sentence_president)
Run Code Online (Sandbox Code Playgroud)
参考:https : //markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html
但是,也存在基于WMD的相似性方法 (WmdSimilarity).
参考:https : //markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html
两者之间有什么区别,除了明显的一个是距离,另一个是相似性?
更新:两者完全相同,只是表示形式不同。
n_queries = len(query)
result = []
for qidx in range(n_queries):
# Compute similarity for each query.
qresult = [self.w2v_model.wmdistance(document, query[qidx]) for document in self.corpus]
qresult = numpy.array(qresult)
qresult = 1./(1.+qresult) # Similarity is the negative of the distance.
# Append single query result to list of all results.
result.append(qresult)
Run Code Online (Sandbox Code Playgroud)
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/similarities/docsim.py
我正在创建一个聊天机器人.所以,我需要二进制格式的word2vec文件.当我加载bin文件时,我得到这种类型的错误.
import gensim
model = gensim.models.Word2Vec.load('GoogleNews-vectors-negative300.bin')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/surya/anaconda3/lib/python3.6/site-packages/gensim/models/word2vec.py", line 975, in load
return super(Word2Vec, cls).load(*args, **kwargs)
File "/home/surya/anaconda3/lib/python3.6/site-packages/gensim/models/base_any2vec.py", line 629, in load
model = super(BaseWordEmbeddingsModel, cls).load(*args, **kwargs)
File "/home/surya/anaconda3/lib/python3.6/site-packages/gensim/models/base_any2vec.py", line 278, in load
return super(BaseAny2VecModel, cls).load(fname_or_handle, **kwargs)
File "/home/surya/anaconda3/lib/python3.6/site-packages/gensim/utils.py", line 395, in load
obj = unpickle(fname)
File "/home/surya/anaconda3/lib/python3.6/site-packages/gensim/utils.py", line 1302, in unpickle
return _pickle.load(f, encoding='latin1')_pickle.
UnpicklingError: invalid load key, '3'.
Run Code Online (Sandbox Code Playgroud) word2vec ×10
python ×7
gensim ×6
nlp ×5
doc2vec ×1
fasttext ×1
lda ×1
nltk ×1
python-3.x ×1
tensorboard ×1
tensorflow ×1