我正在尝试实现一个简单的单词预测算法,通过从以下几个选项中选择来填补句子中的空白:
在伦敦的街道上开车是不好玩的。
有了正确的模式:
问题1.为了找到最佳的合适选择,必须使用什么操作/功能?库中的相似函数定义在一个词到另一个词之间,而不是一个词到一个词列表(例如most_similar_to_given函数)之间。我在任何地方都找不到这个原始函数,尽管它是CBOW承诺的主要操作(参见下面)!我看到了一些不直观的建议这里!我在这里错过了什么?
我决定采用head first方法,从fastText开始,它提供库和经过预处理的数据集,但很快就被困在了文档中:
fastText提供了两个计算单词表示的模型: skipgram和cbow (‘连续的单词袋’)。跳过图模型学习预测目标词,这要归功于附近的单词。另一方面,c弓形模型根据上下文预测目标词。上下文表示为包含在目标单词周围的固定大小窗口中的单词袋。
这个解释对我来说还不清楚,因为“附近”这个词的意思和“上下文”有着相似的意思。我在googled上搜索了一下,最后得到了这个替代定义:
在CBOW模型中,将上下文(或周围词)的分布式表示结合起来来预测中间的单词。而在Skip模型中,使用输入词的分布式表示来预测上下文。
有了这个定义,CBOW是我必须使用的正确模型。现在我有以下问题:
问题2.使用哪种模式来训练快速文本预训练字向量?CBOW还是skipgram?
问题3.知道必须使用的正确模型是CBOW,我是否可以使用跳过图模型训练过的向量作为我的单词预测用例?
发布于 2020-03-23 10:38:26
要做到这一点,我将使用FastText的Gensim包装器,因为Gensim有一个predict_output_word,它可以做您想做的事情。给出一个上下文词的列表,它提供了最合适的单词。
这取决于用户。FastText本身并不是CBOW或Skipgram。请参阅这
是的,尽管CBOW和SkipGram是不同的培训过程,但它们有一个共同的目标。这两种方法都将生成单词嵌入,其中(希望)语义相近的单词也具有接近的嵌入。SkipGram与CBOW的主要区别在于语义紧密性的内在启发式。
https://datascience.stackexchange.com/questions/70075
复制相似问题