句子或文档如何转换为向量?
nlp
word2vec
4
0

我们提供了将单词转换为向量的模型(例如word2vec模型)。是否存在类似的模型,可能使用针对单个单词学习的向量,将句子/文档转换为向量?

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

希望您欢迎实施。在尝试了许多其他解决方案之后,我坚持要使工作变得更轻松的实现,在转换电影图进行分析时也遇到了类似的问题。该代码段附在下面。

通过以下链接安装“ spaCy”

import spacy
nlp = spacy.load('en')
doc = nlp(YOUR_DOC_HERE)
vec = doc.vector

希望这可以帮助。

收藏
评论

有很多方法可以回答这个问题。答案取决于您对短语和句子的解释。

这些为每个单词提供矢量表示的分布模型(例如word2vec只能显示一个单词通常与其他单词相关联地在基于窗口的上下文中使用的方式。基于上下文词关系的这种解释,您可以将句子中所有单词的平均向量作为句子的向量表示。例如,在这句话中:

素食者吃蔬菜。

V_s

我们可以将归一化向量作为向量表示形式:

V(句子)

问题在于句子的构成性质。如果您采用上述平均词向量,则这两个句子具有相同的向量表示:

蔬菜多吃素食。

通过语料库处理以学习树结构的分布方式研究很多。例如: 用成分向量语法解析 。该视频还介绍了此方法。

我想再次强调解释。这些句子向量在您的应用程序中可能具有它们自己的含义。例如,在斯坦福大学这个项目的情感分析中,他们寻求的含义是句子的正面/负面情绪。即使您找到了一个句子的完美向量表示形式,也有一些哲学辩论认为,如果您不能判断真值条件,那么这并不是句子的实际含义(David Lewis,“ General Semantics”,1970)。这就是为什么有几行工作专注于计算机视觉的原因( 本文本文 )。我的观点是,它完全可以取决于您的应用程序和向量的解释。

收藏
评论

1)跳过语法方法: 本文和使用该工具的工具, google word2vec

2)使用LSTM-RNN形成句子的语义表示。

3) 句子和文件的表示 。本文介绍了段落向量。它基本上是一种无监督算法,可从可变长度的文本(例如句子,段落和文档)中学习固定长度的特征表示。

4)尽管本文没有形成句子/段落向量,但这样做很简单。可以只插入单个单词向量(发现手套 词向量表现最佳),然后可以形成整个句子/段落的向量表示。

5)使用CNN 汇总文档。

收藏
评论

一个现成的解决方案要少一些,但是如果您要尝试做的特定事情,那么在准确性方面可能很难被击败:

构建一个RNN(具有LSTM或GRU存储单元, 在此处进行比较 ),并优化您要完成的实际任务的错误功能。您将其输入句子,然后对其进行训练以生成所需的输出。输入句子后网络的激活是句子的表示(尽管您可能只关心网络输出)。

您可以将句子表示为一键编码的字符序列,一键编码的单词序列或单词向量序列(例如GloVeword2vec )。如果您使用单词向量,则可以继续向后传播到单词向量中,并更新其权重,因此您还将获得针对您正在执行的任务而专门调整的自定义单词向量。

收藏
评论

一切取决于:

  • 您正在使用哪种矢量模型
  • 该模型的目的是什么
  • 在将单词向量组合到文档向量中的创造力

如果使用Word2Vec生成了模型,则可以尝试:

或者,您可以执行某些人的操作,即将文档中的所有内容词相加,然后除以内容词,例如https://github.com/alvations/oque/blob/master/o.py#L13 (注意: 17-18是减少噪音的技巧):

def sent_vectorizer(sent, model):
    sent_vec = np.zeros(400)
    numw = 0
    for w in sent:
        try:
            sent_vec = np.add(sent_vec, model[w])
            numw+=1
        except:
            pass
    return sent_vec / np.sqrt(sent_vec.dot(sent_vec))
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号