首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Number批(多语种) OOV字

Number批(多语种) OOV字
EN

Stack Overflow用户
提问于 2020-11-06 15:14:33
回答 1查看 635关注 0票数 3

我正在研究一个文本分类问题(法语语料库),我正在试验不同的单词嵌入。我对ConceptNet提供的东西非常感兴趣,所以我决定试一试。

我无法为我的特殊任务找到一个专门的教程,所以我接受了他们的博客的建议

如何使用ConceptNet Number批处理? 使它尽可能地简单明了: 学习任何使用语义向量的NLP机器学习教程。进入他们告诉你使用word2vec的部分。(一个特别开明的教程可能会告诉您如何使用GloVe 1.2。) 获取ConceptNet数字批处理数据,并使用它。获得更好的结果,也推广到其他语言。

下面您可以找到我的方法(请注意,“numberbatch.txt”是包含推荐的多语言版本的文件: ConceptNet Number批19.08):

代码语言:javascript
复制
embeddings_index = dict()

f = open('numberbatch.txt')

for line in f:
    values = line.split()
    word = values[0]
    coefs = asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()

print('Loaded %s word vectors.' % len(embeddings_index))

首先,我测试了一个单词是否存在:

代码语言:javascript
复制
word = 'fille'
missingWords = 0
if word not in embeddings_index:
    missingWords += 1
print(missingWords)

我发现一个简单的词“fille”(法语中的女孩)没有找到,这让我感到惊讶。然后,我创建了一个函数,用于打印我的语料库中的所有OOV单词。当我分析结果时,我更加惊讶:超过22k的单词没有被找到(包括'nous'(we),'être'(to be)等等)。

我还尝试了在GitHub页面上为OOV单词提出的方法(结果相同):

词汇外策略 ConceptNet Numberbatch是用一个词汇外策略来评估的,它可以帮助它在不熟悉的单词存在的情况下表现出来。该策略是在ConceptNet代码库中实现的。它可概括如下: 如果一个未知单词的语言不是英语,那么试着在英语嵌入中查找拼写相等的单词(因为英语单词往往以所有语言的文本结尾)。 给定一个未知的单词,从末尾删除一个字母,看看它是否是已知单词的前缀。如果是的话,平均这些已知单词的嵌入量。 如果前缀仍然未知,请继续从末尾删除字母,直到找到已知前缀为止。当一个角色还存在的时候放弃吧。

我的方法做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 16:02:32

您是否考虑到了ConceptNet Numberbatch的格式?如项目的GitHub所示,如下所示:

/c/en/绝对值-0.0847 -0.1316 -0.0800 -0.0708 -0.2514 -0.1687 -. /c/en/绝对值0.0056 -0.0051 0.0332 -0.1525 -0.0955 -0.0902 0.07

这种格式意味着不会找到fille,但是/c/fr/fille会找到。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64717185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档