【问题标题】:How to vectorize whole text using fasttext?如何使用 fasttext 对整个文本进行矢量化?
【发布时间】:2017-04-17 16:06:14
【问题描述】:

要获取单词的向量,我可以使用:

model["word"]

但是如果我想得到一个句子的向量,我需要对所有单词的向量求和或者得到所有向量的平均值。

FastText 是否提供了一种方法来做到这一点?

【问题讨论】:

  • 如果您对 java 中的实现有任何想法!

标签: facebook nlp fasttext


【解决方案1】:

如果你想计算句子或段落的向量表示,请使用:

$ ./fasttext print-sentence-vectors model.bin < text.txt

这假定 text.txt 文件包含您要为其获取向量的段落。程序将在文件中的每一行输出一个向量表示。

这在 fasttext repo 的 README 中已明确提及。 https://github.com/facebookresearch/fastText

【讨论】:

  • 是他们使用 java 的另一个实现。
  • AFAIK,fasttext 目前仅支持 CLI。但是,我能够找到一个库,它是 fasttext 的 pythonic 接口。你可以谷歌看看你是否可以在java中找到一个。
  • 我找到了一个github.com/vinhkhuc/JFastText,但对@Andrey 有同样的问题。我应该通过 for 循环得到该行,然后为每个单词获取另一个单词循环。但我怎么能得到总数。我找不到像你发布的线路
  • 不,这个“打印向量”命令的目的是为您提供文件中所有行的向量。如果您再次看到该命令,“text.txt”是一个包含预处理数据的文件(即每行一个段落)。您只需将所有句子以指定格式放入文件中,然后将该文件作为选项传递给“打印向量”。
  • 好吧,这真的很难解释:P 我会尝试用更简单的语言来解释。当您调用 print-vectors 时,您为其提供了一个文件(您的输入文件包含很多段落或句子,并且文件的一行被视为一个段落)。您可以在文件中包含任意数量的段落。您只需调用一次 print-vectors ,它将输出输入文件中所有行的向量。我建议您阅读 Fasttext 文档,那里已经很好地提到了所有内容。 :)
【解决方案2】:

您也可以使用 python 包装器。使用此处的官方安装指南安装它: https://fasttext.cc/docs/en/python-module.html#installation

然后:

import fasttext
model = fasttext.load_model('model.bin')
vect = model.get_sentence_vector("some string") # 1 sentence
vect2 = [model.get_sentence_vector(el.replace('\n', '')) for el in text] # for text

【讨论】:

    【解决方案3】:

    要使用 fasttext 获取句子的向量,请尝试以下命令

    $ echo "Your Sentence Here" | ./fasttext print-sentence-vectors model.bin
    

    有关这方面的示例,请参阅Learn Word Representations In Fasttext

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2022-08-16
      • 1970-01-01
      • 2010-09-29
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多