问题:
我使用带向量的手套预训练模型来重新训练我的模型,比如#cars,在训练之后,我想在我的领域内找到类似的单词,但是我在我的领域语料库中没有得到单词,我相信它来自手套的向量。
model_2.most_similar(positive=['spacious'], topn=10)
[('bedrooms', 0.6275501251220703),
('roomy', 0.6149100065231323),
('luxurious', 0.6105825901031494),
('rooms', 0.5935696363449097),
('furnished', 0.5897485613822937),
('cramped', 0.5892841219902039),
('courtyard', 0.5721820592880249),
('bathrooms', 0.5618442893028259),
('opulent', 0.5592212677001953),
('expansive', 0.555268406867981)]在这里,我期待一些像腿部空间,汽车的宽敞功能在领域的语料库中提到。如何在有相似矢量的情况下排除手套向量?
谢谢
发布于 2019-01-16 21:54:31
在一组简单的通用字向量中,可能没有足够的信息来通过使用域过滤邻居。
您可以尝试使用混合加权:将与'spacious'和'cars'的相似之处结合起来,并返回该组合中的最高结果--这可能会有所帮助。
向positive方法提供多个most_similar()单词可能近似于此。如果您确信有一些主要的干扰/重叠来源,您甚至可以使用negative单词示例,类似于word2vec如何为类推找到候选答案(尽管这也可能会抑制与两个领域(如'roomy')合法相关的有用结果)。例如:
candidates = vec_model.most_similar(positive=['spacious', 'car'],
negative=['house'])(您也可以尝试使用由许多定义域的单词组合而成的向量,而不是使用“car”或“house”这样的单个单词。)
但是,一个尖锐的区别听起来像是一个研究项目,而不是通过现成的库/向量很容易实现的东西,而且可能需要更复杂的方法和数据集。
您也可以尝试使用一组只在感兴趣领域的文本数据集上训练的向量,从而确保单词的词汇和感官都在该领域。
发布于 2019-01-16 11:02:22
您不能排除已经训练过的模型中的单词。我不知道您在哪个框架中工作,但我将给出Keras中的示例,因为理解意图很简单。
你可以做的是使用嵌入层,用GloVe“知识”填充它,然后用你的语料库恢复训练,这样层就可以学习单词并适合你的特定领域。你可以在Keras博客上读到更多关于它的信息。
https://stackoverflow.com/questions/54215456
复制相似问题