我试图通过将来自google word2vec网站(freebase-vectors-skipgram1000.bin.gz)的预训练.bin文件加载到word2vec的gensim实现中来开始.模型加载很好,
用...
model = word2vec.Word2Vec.load_word2vec_format('...../free....-en.bin', binary= True)
Run Code Online (Sandbox Code Playgroud)
并创造一个
>>> print model
<gensim.models.word2vec.Word2Vec object at 0x105d87f50>
Run Code Online (Sandbox Code Playgroud)
但是当我运行最相似的功能时.它无法找到词汇中的单词.我的错误代码如下.
我出错的任何想法?
>>> model.most_similar(['girl', 'father'], ['boy'], topn=3)
2013-10-11 10:22:00,562 : WARNING : word ‘girl’ not in vocabulary; ignoring it
2013-10-11 10:22:00,562 : WARNING : word ‘father’ not in vocabulary; ignoring it
2013-10-11 10:22:00,563 : WARNING : word ‘boy’ not in vocabulary; ignoring it
Traceback (most recent call last):
File “”, line 1, in
File “/....../anaconda/python.app/Contents/lib/python2.7/site-packages/gensim-0.8.7/py2.7.egg/gensim/models/word2vec.py”, line 312, in most_similar
raise ValueError(“cannot compute similarity with …Run Code Online (Sandbox Code Playgroud) 我尝试在DL4J上执行以下示例(加载预先训练的矢量文件):
File gModel = new File("./GoogleNews-vectors-negative300.bin.gz");
Word2Vec vec = WordVectorSerializer.loadGoogleModel(gModel, true);
InputStreamReader r = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(r);
for (; ; ) {
System.out.print("Word: ");
String word = br.readLine();
if ("EXIT".equals(word)) break;
Collection<String> lst = vec.wordsNearest(word, 20);
System.out.println(word + " -> " + lst);
}
Run Code Online (Sandbox Code Playgroud)
但它超级慢(计算最近的单词需要大约10分钟,尽管它们是正确的).
有足够的内存(-Xms20g -Xmx20g).
当我从https://code.google.com/p/word2vec/运行相同的Word2Vec示例时
它非常快地给出最近的单词.
DL4J使用的ND4J声称速度是Numpy的两倍:http://nd4j.org/benchmarking
我的代码有什么问题吗?
更新:它基于https://github.com/deeplearning4j/dl4j-0.4-examples.git(我没有触及任何依赖项,只是试图阅读谷歌预先训练的矢量文件).Word2VecRawTextExample工作正常(但数据大小相对较小).
我正在玩FastText,https: //pypi.python.org/pypi/fasttext 非常相似FastText.因为它似乎是一个非常新的库,但还没有很多内置函数.我想知道如何提取形态相似的词,例如:Word2Vec- >狗.但是没有内置的功能.
如果我输入model.similar_word("dog")I只获得向量,那可能用于比较余弦相似度model["dog"].我是否必须进行某种循环并对model.cosine_similarity(model["dog"], model["dogs"]])文本中所有可能的对进行操作?那需要时间......
我正在尝试找出适合开放命名实体识别问题的最佳模型(生物学/化学,因此不存在实体字典,但必须通过上下文来识别).
目前我最好的猜测是修改语法,以便不是将单词标记为N,V,ADJ等,而是学习标记为BEGINNING,INSIDE,OUT(IOB表示法).
但是我不确定哪种方法最好?
非常感谢指向正确方法的指针!谢谢!
由Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除低于特定频率的单词以将vocab计数降低到例如200k字.
我在gensim包中找到了Word2Vec方法来确定单词频率并再次重新保存模型,但我不确定如何在再次保存之前从预先训练的模型中进行pop/ remove词汇.我找不到在任何暗示KeyedVector class和Word2Vec class这样的操作?
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py
如何选择预训练word2vec模型的词汇子集?
我有两个目录,我想从中读取他们的文本文件并标记它们,但我不知道如何通过它TaggedDocument.我认为它可以用作TaggedDocument([Strings],[Labels]),但这显然不起作用.
这是我的代码:
from gensim import models
from gensim.models.doc2vec import TaggedDocument
import utilities as util
import os
from sklearn import svm
from nltk.tokenize import sent_tokenize
CogPath = "./FixedCog/"
NotCogPath = "./FixedNotCog/"
SamplePath ="./Sample/"
docs = []
tags = []
CogList = [p for p in os.listdir(CogPath) if p.endswith('.txt')]
NotCogList = [p for p in os.listdir(NotCogPath) if p.endswith('.txt')]
SampleList = [p for p in os.listdir(SamplePath) if p.endswith('.txt')]
for doc in CogList:
str = open(CogPath+doc,'r').read().decode("utf-8")
docs.append(str)
print docs
tags.append(doc)
print "###########" …Run Code Online (Sandbox Code Playgroud) 我正在研究文本分类问题,也就是说,给定一些文本,我需要为其分配某些给定的标签.
我尝试过使用Facebook的快速文本库,它有两个我感兴趣的实用工具:
A)具有预训练模型的单词向量
B)文本分类实用程序
但是,似乎这些是完全独立的工具,因为我无法找到合并这两个实用程序的任何教程.
我想要的是能够通过利用Word-Vectors的预训练模型对某些文本进行分类.有没有办法做到这一点?
具有大量参数的ML模型将倾向于过度拟合(因为它们具有大的变化).在我看来,word2vec就是这样一个模型.减少模型方差的方法之一是应用正则化技术,这对于其他嵌入模型是非常常见的,例如矩阵分解.但是,基本版本word2vec没有任何正规化部分.是否有一个原因?
I have trained a Word2Vec model using Gensim 3.8.0. Later I tried to use the pretrained model using Gensim 4.0.o on GCP. I used the following code:
model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = model.wv.vocab.keys()
self.word2vec = {word:model.wv[word]%EMBEDDING_DIM for word in words}
Run Code Online (Sandbox Code Playgroud)
I was getting error that "model.mv" has been removed from Gensim 4.0.0. Then I used the following code:
model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = model.vocab.keys()
word2vec = {word:model[word]%EMBEDDING_DIM for word in words}
Run Code Online (Sandbox Code Playgroud)
And getting the following error: …
我正在尝试构建 Word2vec 模型,但是当我尝试重塑标记向量时,出现此错误。任何想法 ?
wordvec_arrays = np.zeros((len(tokenized_tweet), 100))
for i in range(len(tokenized_tweet)):
wordvec_arrays[i,:] = word_vector(tokenized_tweet[i], 100)
wordvec_df = pd.DataFrame(wordvec_arrays)
wordvec_df.shape
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-101-71156bf1c4a3> in <module>
1 wordvec_arrays = np.zeros((len(tokenized_tweet), 100))
2 for i in range(len(tokenized_tweet)):
----> 3 wordvec_arrays[i,:] = word_vector(tokenized_tweet[i], 100)
4 wordvec_df = pd.DataFrame(wordvec_arrays)
5 wordvec_df.shape
<ipython-input-100-e3a82e60af93> in word_vector(tokens, size)
4 for word in tokens:
5 try:
----> 6 vec += model_w2v[word].reshape((1, size))
7 count += 1.
8 except KeyError: # handling the case …Run Code Online (Sandbox Code Playgroud) word2vec ×10
gensim ×5
nlp ×5
python ×4
fasttext ×2
doc2vec ×1
embedding ×1
nd4j ×1
nltk ×1
python-3.x ×1
regularized ×1
syntaxnet ×1
tensorflow ×1