标签: word2vec

在gensim python中使用google word2vec .bin文件

我试图通过将来自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)

python gensim word2vec

8
推荐指数
1
解决办法
2734
查看次数

DL4J在GoogleNews-vectors文件上超级慢

我尝试在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工作正常(但数据大小相对较小).

machine-learning word2vec deep-learning nd4j deeplearning4j

8
推荐指数
1
解决办法
881
查看次数

如何用FastText找到类似的单词?

我正在玩FastText,https: //pypi.python.org/pypi/fasttext 非常相似FastText.因为它似乎是一个非常新的库,但还没有很多内置函数.我想知道如何提取形态相似的词,例如:Word2Vec- >狗.但是没有内置的功能.

如果我输入model.similar_word("dog")I只获得向量,那可能用于比较余弦相似度model["dog"].我是否必须进行某种循环并对model.cosine_similarity(model["dog"], model["dogs"]])文本中所有可能的对进行操作?那需要时间......

python nlp word2vec fasttext

8
推荐指数
4
解决办法
9368
查看次数

TensorFlow RNN用于命名实体识别

我正在尝试找出适合开放命名实体识别问题的最佳模型(生物学/化学,因此不存在实体字典,但必须通过上下文来识别).

目前我最好的猜测是修改语法,以便不是将单词标记为N,V,ADJ等,而是学习标记为BEGINNING,INSIDE,OUT(IOB表示法).

但是我不确定哪种方法最好?

  • Syntaxnet
  • word2vec
  • seq2seq(我认为这不是正确的,因为我需要它来学习两个对齐的序列,而seq2seq是为翻译时不同长度的序列设计的)

非常感谢指向正确方法的指针!谢谢!

named-entity-recognition word2vec tensorflow syntaxnet

8
推荐指数
1
解决办法
4705
查看次数

使用Gensim减少Google的Word2Vec模型

Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除低于特定频率的单词以将vocab计数降低到例如200k字.

我在gensim包中找到了Word2Vec方法来确定单词频率并再次重新保存模型,但我不确定如何在再次保存之前从预先训练的模型中进行pop/ remove词汇.我找不到在任何暗示KeyedVector classWord2Vec 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模型的词汇子集?

nlp gensim word2vec

8
推荐指数
1
解决办法
2952
查看次数

如何在gensim中使用TaggedDocument?

我有两个目录,我想从中读取他们的文本文件并标记它们,但我不知道如何通过它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)

python nltk gensim word2vec doc2vec

8
推荐指数
2
解决办法
1万
查看次数

FastText使用预先训练的单词向量进行文本分类

我正在研究文本分类问题,也就是说,给定一些文本,我需要为其分配某些给定的标签.

我尝试过使用Facebook的快速文本库,它有两个我感兴趣的实用工具:

A)具有预训练模型的单词向量

B)文本分类实用程序

但是,似乎这些是完全独立的工具,因为我无法找到合并这两个实用程序的任何教程.

我想要的是能够通过利用Word-Vectors的预训练模型对某些文本进行分类.有没有办法做到这一点?

nlp text-classification word2vec fasttext

8
推荐指数
2
解决办法
4798
查看次数

为什么word2vec不使用正则化?

具有大量参数的ML模型将倾向于过度拟合(因为它们具有大的变化).在我看来,word2vec就是这样一个模型.减少模型方差的方法之一是应用正则化技术,这对于其他嵌入模型是非常常见的,例如矩阵分解.但是,基本版本word2vec没有任何正规化部分.是否有一个原因?

nlp machine-learning embedding regularized word2vec

8
推荐指数
1
解决办法
837
查看次数

Gensim 3.8.0 to Gensim 4.0.0

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: …

python nlp gensim word2vec word-embedding

8
推荐指数
2
解决办法
8876
查看次数

类型错误:“Word2Vec”对象不可下标

我正在尝试构建 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)

python-3.x gensim word2vec jupyter-notebook

8
推荐指数
1
解决办法
2万
查看次数