我正在尝试创建一个NLP模型,它可以找到类似的句子。例如,应该可以说“软件工程师”、“软件开发人员”、“软件开发人员”、“软件工程师”是类似的句子。
我有一个数据集,其中列出了一些角色,如Cheif高管、软件工程师,这些术语的变化将是未知的(词汇量不足)。
我试着在Gensim中使用fastText,但是很困难。有没有人推荐过可能对我有帮助的阅读材料/教程?
发布于 2021-08-03 17:11:48
对于FastText (以及类似的Word2vec类算法)来说,仅仅列出角色可能不是足够的数据,它需要查看自然用法上下文中的单词(或标记),以及其他相关的单词,以逐步将它们推入相对相似性对齐。
你只是有头衔或其他角色的描述吗?
如果标题是由单个单词组成的,在标题上下文中,这些词的含义大多与正常上下文中相同,而且它们非常短(每个字数为2-3个单词),一种可能的方法是尝试"word mover's title“(WMD)度量。
你会想要从其他地方训练好的单词向量,它们具有良好的上下文和兼容的词义,因此'software'、'engineer'等单独的向量都是相当好的。然后,你可以在Gensim的单词向量类中使用.wmdistance()方法来计算一个度量,在所有文本单词中,一个单词的运行与另一个单词的运行不同。
Update:请注意,对于来自大规模毁灭性武器的值(以及那些来自余弦相似性的值),您通常不应该纠结于它们的绝对值,而应该只关注它们如何影响相对排名。也就是说,无论wmd(['software', 'engineer'], ['electric', 'engineer'])返回什么原始值(无论是0.01还是100 ),重要的衡量标准都是这个数字与其他成对比较的比较方式,比如wmd(['software', 'engineer'], ['software', 'developer'])。
https://stackoverflow.com/questions/68634515
复制相似问题