将tf-idf与FastText向量一起使用

Lui*_*uez 5 python nlp fasttext

我对将tf-idf与FastText库一起使用很感兴趣,但是找到了一种处理ngram的逻辑方法。我已经将tf-idf与SpaCy向量一起使用了,以发现以下示例:

但是对于FastText库,我不太清楚,因为它的粒度不太直观,例如EG

对于一般的word2vec方法,我每个单词都有一个矢量,我可以计算该矢量的词频,并相应地除以其值。

但是对于fastText,同一个单词会有几个n-gram

“听最新新闻摘要”将具有由滑动窗口生成的n-gram,例如:

十个孩子...

这些n-gram由模型内部处理,因此当我尝试时:

model["Listen to the latest news summary"] 
Run Code Online (Sandbox Code Playgroud)

我直接得到最终的向量,因此我所需要的是在输入模型之前将文本拆分为n元语法:

model['lis']
model['ist']
model['ten']
Run Code Online (Sandbox Code Playgroud)

然后从那里制作tf-idf,但这似乎都是一种低效的方法,是否存在将tf-idf应用于此类矢量n-gram的标准方法。

Her*_*van 2

我会让 FastText 处理三元组,但继续tfidf在单词级别构建 加权嵌入。

也就是说,你发送

model["Listen"]
model["to"]
model["the"]
...
Run Code Online (Sandbox Code Playgroud)

到 FastText,然后使用旧代码获取 tf-idf 权重。

无论如何,最好知道 FastText 本身在处理句子时是否考虑单词结构,或者它实际上仅将其作为三元组序列(混合连续单词)。如果后者为真,那么对于 FastText,您将通过将句子分成单独的单词来丢失信息。