标签: word2vec

如何从Word2Vec模型获取词频

我已经使用 gensim.models.Word2Vec 训练了 Word2Vec 模型。通过什么方式可以获得这个模型中每个单词的频率?

python word2vec

3
推荐指数
1
解决办法
3514
查看次数

如何在gensim中使用build_vocab?

  1. Build_vocab 扩展我的旧词汇?

例如,我的想法是当我使用 doc2vec(s) 来训练模型时,它只是从数据集中构建词汇表。如果我想扩展它,我需要使用 build_vocab()

  1. 我应该在哪里使用它?我应该把它放在“gensim.doc2vec()”之后吗?

例如:

sentences = gensim.models.doc2vec.TaggedLineDocument(f_path)
dm_model = gensim.models.doc2vec.Doc2Vec(sentences, dm=1, size=300, window=8, min_count=5, workers=4)
dm_model.build_vocab()
Run Code Online (Sandbox Code Playgroud)

nlp gensim word2vec doc2vec

3
推荐指数
1
解决办法
7573
查看次数

在 scikit-learn 管道中使用 gensim word2vec

我正在尝试word2vec在 scikit-learn 管道中使用。

from sklearn.base import BaseEstimator, TransformerMixin
import pandas as pd
import numpy as np

class ItemSelector(BaseEstimator, TransformerMixin):
    def __init__(self, key):
        self.key = key

    def fit(self, x, y=None):
        return self

    def transform(self, data_dict):
        return data_dict[self.key]


from sklearn.pipeline import Pipeline
from gensim.sklearn_api import W2VTransformer
pipeline_word2vec = Pipeline([
                ('selector', ItemSelector(key='X')),
                ('w2v', W2VTransformer()),
            ])

pipeline_word2vec.fit(pd.DataFrame({'X':['hello world','is amazing']}), np.array([1,0]))
Run Code Online (Sandbox Code Playgroud)

这给了我

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-11-9e2dd309d07c> in <module>()
     23                 ('w2v', W2VTransformer()),
     24             ])
---> 25 pipeline_word2vec.fit(pd.DataFrame({'X':['hello world','is amazing']}), np.array([1,0])) …
Run Code Online (Sandbox Code Playgroud)

python gensim scikit-learn word2vec

3
推荐指数
1
解决办法
3195
查看次数

Word2Vec min_count 是如何应用的

假设我正在训练一个 min_count=5 的(Gensim)Word2Vec 模型。文档告诉我们 min_count 的作用:

忽略总频率低于此的所有单词。

min_count 对上下文有什么影响?假设我有一个由频繁词 (min_count > 5) 和不常用词 (min_count < 5) 组成的句子,用 f 和 i 注释:

这 (f) 是 (f) a (f) 测试 (i) 句子 (i) 其中 (f) 是 (f) 显示 (i) 此处 (i)

我只是编造了哪个词经常使用,哪个词不用于演示目的。

如果我删除所有不常用的词,我们会得到一个完全不同的上下文,从中训练 word2vec。在此示例中,您的句子将是“This is a which is”,这将是 Word2Vec 的训练句子。而且,如果你有很多不常用的词,原本相距很远的词现在放在同一个上下文中。

这是对 Word2Vec 的正确解释吗?我们是否只是假设您的数据集中不应该有太多不常用的词(或设置较低的 min_count 阈值)?

python gensim word2vec

3
推荐指数
1
解决办法
5400
查看次数

如何将词嵌入和 pos 嵌入结合在一起来构建分类器

你知道的 POS 就像 'NP'、'VERB'。如何将这些功能结合到 word2vec 中?

就像下面的向量一样?

keyword    V1         V2          V3         V4            V5         V6   
corruption 0.07397  0.290874    -0.170812   0.085428     'VERB'    'NP' 
people      ..............................................................
budget      ...........................................................
Run Code Online (Sandbox Code Playgroud)

nlp word2vec word-embedding pos

3
推荐指数
1
解决办法
5285
查看次数

gensim 的 word2vec 中的层大小

当我开始训练我的 word2vec 模型时,我看到了警告

考虑将层大小设置为 4 的倍数以获得更好的性能

这听起来很不错,但我layer文档中找不到任何对论点或类似内容的引用。

那么如何增加图层大小,以及如何确定一个好的值呢?

python nlp python-3.x gensim word2vec

3
推荐指数
1
解决办法
1195
查看次数

Word2Vec 时间复杂度

我用谷歌搜索了这个问题,但我找不到任何可靠的解决方案(某些来源给出了 log(V) 一些 log(V/2)。但是具有以下参数的 word2vec 模型的时间复杂度是多少:

Word2Vec(corpus, size=4000, window=30, min_count=1, workers=50, iter=100, alpha=0.0001)

我有一个等于 10000 个单词(独特单词)的词汇表。

python big-o time-complexity gensim word2vec

3
推荐指数
1
解决办法
1140
查看次数

训练好的 word2vec 模型词汇中缺少单词

我目前正在使用 python 使用我提供的句子训练 Word2Vec 模型。然后,我保存并加载模型以获取用于训练模型的句子中每个词的词嵌入。但是,我收到以下错误。

KeyError:“单词'n1985_chicago_bears'不在词汇表中”

而训练期间提供的句子之一如下。

sportsteam n1985_chicago_bears teamplaysincity city chicago
Run Code Online (Sandbox Code Playgroud)

因此,我想知道为什么词汇表中缺少一些单词,尽管接受了该句子语料库中的那些单词的训练。

在自己的语料库上训练 word2vec 模型

import nltk
import numpy as np
from termcolor import colored
from gensim.models import Word2Vec
from gensim.models import KeyedVectors
from sklearn.decomposition import PCA


#PREPARING DATA

fname = '../data/sentences.txt'

with open(fname) as f:
    content = f.readlines()

# remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content]


#TOKENIZING SENTENCES

sentences = []

for x in content:
    nltk_tokens = …
Run Code Online (Sandbox Code Playgroud)

python nltk gensim word2vec tensorflow

3
推荐指数
1
解决办法
2924
查看次数

gensim word2vec的训练时间

我正在 34 GB 预处理的 MS_MARCO 语料库(22 GB)上从头开始训练 word2vec。(预处理的语料库被标记化,因此它的大小更大)我正在使用以下代码训练我的 word2vec 模型:

from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec

class Corpus():
    """Iterate over sentences from the corpus."""
    def __init__(self):
        self.files = [
            "sp_cor1.txt",
            "sp_cor2.txt",
            "sp_cor3.txt",
            "sp_cor4.txt",
            "sp_cor5.txt",
            "sp_cor6.txt",
            "sp_cor7.txt",
            "sp_cor8.txt"
        ]

    def __iter__(self):
        for fname in self.files:
            for line in open(fname):
                words = line.split()
                yield words

sentences = Corpus()

model = Word2Vec(sentences, size=300, window=5, min_count=1, workers=8, sg=1, hs=1, negative=10)
model.save("word2vec.model")

Run Code Online (Sandbox Code Playgroud)

我的模型现在运行了大约 30 多个小时。这是值得怀疑的,因为在我的 8 核 i5 笔记本电脑上,我每时每刻都以 100% 的速度使用所有 8 …

python nlp gensim word2vec

3
推荐指数
1
解决办法
2078
查看次数

使用 Word2Vec 的文本相似度

我想使用 Word2Vec 来检查文本的相似性。

我目前正在使用另一种逻辑:

from fuzzywuzzy import fuzz

def sim(name, dataset):
    matches = dataset.apply(lambda row: ((fuzz.ratio(row['Text'], name) ) = 0.5), axis=1)
   return 
Run Code Online (Sandbox Code Playgroud)

(名字是我的专栏)。

为了应用此功能,我执行以下操作:

df['Sim']=df.apply(lambda row: sim(row['Text'], df), axis=1)
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何用 Word2Vec 替换 Fuzzy.ratio 以便比较数据集中的文本吗?

数据集示例:

Text
Hello, this is Peter, what would you need me to help you with today? 
I need you
Good Morning, John here, are you calling regarding your cell phone bill? 
Hi, this this is John. What can I do for you?
...
Run Code Online (Sandbox Code Playgroud)

第一个文本和最后一个文本非常相似,尽管它们用不同的词来表达相似的概念。我想创建一个新列,用于为每一行放置相似的文本。我希望你能帮助我。

python similarity pandas word2vec

3
推荐指数
1
解决办法
1402
查看次数