我想在一个简单的向量空间图中绘制不同单词之间的相似性。我已经使用 gensim 给出的模型计算了它们word2vec,但我在文献中找不到任何图形示例。我的代码如下:
## Libraries to download
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from gensim import corpora, models
import gensim
import json
import nltk
import re
import pandas
appended_data = []
#for i in range(20014,2016):
# df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
# appended_data.append(df0)
for i in range(2005,2016):
if i > 2013:
df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
appended_data.append(df0)
df1 = pandas.DataFrame([json.loads(l) for l in open('Scot_%d.json' …Run Code Online (Sandbox Code Playgroud) 我正在使用词嵌入来查找两个句子之间的相似性。使用 word2vec,如果一个句子是英语,另一个句子是荷兰语,我还可以获得相似性度量(尽管不是很好)。
所以我开始想知道是否有可能计算两种不同语言的两个句子之间的相似度(没有明确的翻译),特别是如果这些语言有一些相似之处(英语/荷兰语)?
为什么skipgram模型比CBOW模型花费更多的时间。我用相同的参数(向量大小和窗口大小)训练模型。
我正在尝试使用以下代码加载手套向量
en_model = gensim.models.KeyedVectors.load_word2vec_format(model_path, binary=False)
Run Code Online (Sandbox Code Playgroud)
我意外收到以下错误。
File "/home/k/Desktop/Work/Vector explorer/word2vec-explorer/vec_test_loader.py", line 55, in make_model
en_model = KeyedVectors.load_word2vec_format(model_path, binary=is_bin)
File "/home/k/.local/lib/python3.5/site-packages/gensim/models/keyedvectors.py", line 1119, in load_word2vec_format
limit=limit, datatype=datatype)
File "/home/k/.local/lib/python3.5/site-packages/gensim/models/utils_any2vec.py", line 175, in _load_word2vec_format
vocab_size, vector_size = (int(x) for x in header.split()) # throws for invalid file format
File "/home/k/.local/lib/python3.5/site-packages/gensim/models/utils_any2vec.py", line 175, in <genexpr>
vocab_size, vector_size = (int(x) for x in header.split()) # throws for invalid file format
ValueError: invalid literal for int() with base 10: 'the'
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
对于 Skip-gram word2vec 训练样本获取如下:
Sentence: The fox was running across the maple forest
Run Code Online (Sandbox Code Playgroud)
这个词fox给下对训练:
fox-run, fox-across, fox-maple, fox-forest
Run Code Online (Sandbox Code Playgroud)
等等对于每个单词。CBOW w2v 使用反向方法:
run-fox, across-fox, maple-fox, forest-fox
Run Code Online (Sandbox Code Playgroud)
或者forest一句话:
fox-forest, run-forest, across-forest, maple-forest
Run Code Online (Sandbox Code Playgroud)
所以我们得到了所有的对。如果我们在 CBOW 模式下训练时不指定目标词,那么在使用 gensim 库进行训练时,Skip-gram word2vec 和 CBOW w2v 有什么区别?在这两种情况下,是否都使用了所有单词对?
我正在尝试使用 Python 3 中的 word2vec-gensim 从文本文件中的 wiki 标题转储中提取印度尼西亚标题。 wiki 转储还包含其他语言的标题和一些符号。下面是我的代码:
if len(sys.argv) != 3:
namaFileInput = "idwiki-latest-pages-articles.xml.bz2"
namaFileOutput = "wiki.id.case.text"
sys.exit(1)
inp, outp = sys.argv[1:3]
space = " "
i = 0
output = open(namaFileOutput, 'w')
# lower=False: huruf kecil dan besar dibedakan
wiki = WikiCorpus(namaFileInput, lemmatize=False, dictionary={}, lower=False)
for text in wiki.get_texts():
if six.PY3:
output.write(b' '.join(text).encode('utf-8') + '\n')
else:
output.write(space.join(text) + "\n")
i = i + 1
if i % 10000 == 0:
logger.info("Saved " + str(i) + " …Run Code Online (Sandbox Code Playgroud) 我需要微调我的 word2vec 模型。我有两个数据集,data1和data2.
到目前为止我所做的是:
model = gensim.models.Word2Vec(
data1,
size=size_v,
window=size_w,
min_count=min_c,
workers=work)
model.train(data1, total_examples=len(data1), epochs=epochs)
model.train(data2, total_examples=len(data2), epochs=epochs)
Run Code Online (Sandbox Code Playgroud)
这样对吗?我需要将学习的权重存储在某个地方吗?
有人可以向我解释要遵循的步骤吗?
我正在尝试从维基百科文本数据训练 word2vec 模型,为此我使用以下代码。
import logging
import os.path
import sys
import multiprocessing
from gensim.corpora import WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
if __name__ == '__main__':
program = os.path.basename(sys.argv[0])
logger = logging.getLogger(program)
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s')
logging.root.setLevel(level=logging.INFO)
logger.info("running %s" % ' '.join(sys.argv))
# check and process input arguments
if len(sys.argv) < 3:
print (globals()['__doc__'])
sys.exit(1)
inp, outp = sys.argv[1:3]
model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())
# trim unneeded model memory = use (much) less RAM
model.init_sims(replace=True)
model.save(outp) …Run Code Online (Sandbox Code Playgroud) python multiprocessing gensim word2vec python-multiprocessing
我正在研究 Word2Vec 模型。有什么方法可以获得其参数之一的理想值,即iter. 就像我们在 K-Means(Elbo 曲线图)中使用的方式来获取 K 值。或者有没有其他方法可以对这个模型进行参数调整。
word2vec ×10
gensim ×6
python ×5
nlp ×2
data-science ×1
graph ×1
nltk ×1
python-3.7 ×1
tensorboard ×1
tensorflow ×1