【问题标题】:Pretrained Fasttext model returns gibberish for out-of-vocabulary words预训练的 Fasttext 模型为词汇表外的单词返回乱码
【发布时间】:2019-03-22 11:26:20
【问题描述】:

我在使用预训练的 fasttext.bin 模型(从 https://fasttext.cc/docs/en/crawl-vectors.html 检索)时遇到问题。检查 most_similar 是否有 in-vocabulary-words 会返回合理的响应。但是,当检查 most_similar 以查找只有一个字符不同的词汇表外单词时,会返回乱码。

我的问题:这是否与模型有关,还是我以错误的方式使用它?

from gensim.models.wrappers import FastText
model = FastText.load_fasttext_format('cc.en.300.bin')
model.most_similar("universitet")
[('Universitet', 0.8522759675979614),
 ('högskolan', 0.677900493144989),
 ('Högskola', 0.6725144386291504),
 ('högskola', 0.6724666357040405),
 ('Högskolan', 0.6600401997566223),
 ('Universitetet', 0.6519213318824768),
 ('Høgskolen', 0.647462010383606),
 ('Universiteti', 0.6399329900741577),
 ('forskning', 0.617483377456665),
 ('språk', 0.6172543168067932)]

model.most_similar("universitett")
[('ESTATERETAILCONSUMERPHONESCARSBIKESAPPSINTERNETTABLETSCOMPUTERSSOCIETYPOLITICSLAWCRIMEENVIRONMENTSCIENCEARTSCELEBRITIESSPORTSSPECIALSFIRST',
  0.47905537486076355),
 ('Wikipedia-Page-Suzannah-B-Troy-6-yrs-after-Misogynist-Cyber-Vandalism-Censorship-via-Deletion-on-a-page-about-Censorship-Wikipedia-Agrees-to-retur',
  0.47733378410339355),
 ('DEky4M0BSpUOTPnSpkuL5I0GTSnRI4jMepcaFAoxIoFnX5kmJQk1aYvr2odGBAAIfkECQoABAAsCQAAABAAEgAACGcAARAYSLCgQQEABBokkFAhAQEQHQ4EMKCiQogRCVKsOOAiRocbLQ7EmJEhR4cfEWoUOTFhRIUNE44kGZOjSIQfG9rsyDCnzp0AaMYMyfNjS6JFZWpEKlDiUqALJ0KNatKmU4NDBwYEACH5BAkKAAQALAkAAAAQABIAAAhpAAEQGEiQIICDBAUgLEgAwICHAgkImBhxoMOHAyJOpGgQY8aBGxV2hJgwZMWLFTcCUIjwoEuLBym69PgxJMuDNAUqVDkz50qZLi',
  0.474983274936676),
 ('DEky4M0BSpUOTPnSpkuL5I0GTSnRI4jMepcaFAoxIoFnX5kmJQk1aYvr2odGBAAIfkECQoABAAsCQAAABAAEgAACGcAARAYSLCgQQEABBokkFAhAQEQHQ4EMKCiQogRCVKsOOAiRocbLQ7EmJEhR4cfEWoUOTFhRIUNE44kGZOjSIQfG9rsyDCnzp0AaMYMyfNjS6JFZWpEKlDiUqALJ0KNatKmU4NDBwYEACH5BAUKAAQALAkAAAAQABIAAAhpAAEQGEiQIICDBAUgLEgAwICHAgkImBhxoMOHAyJOpGgQY8aBGxV2hJgwZMWLFTcCUIjwoEuLBym69PgxJMuDNAUqVDkz50qZLi',
  0.47364047169685364),
 ('crescendosexibloguerobateyabsorbersexiindesignabledinerolatifundiosexibrezarcularsutesexirapoplinbrezarcorrentosoVd.lazadareflejoreglafeministabrezarchuzasexiouttiqueblogueroin',
  0.47090965509414673),
 ('QQFZAAEACwAAAAAGQASAAAIjgAJCBQIoGDBgQgTKiwooGHDgwshDgTgsOLDhAAGaAQwUYBBhx85EtS4cWLGjR5JSjxZkgDFkwwLohTJUqTLlANiwvQ4seVNjwwfBoVokKjFo0Jlksz506NFiklZtoQKFSjIoktLVv1YsahSn1WP0vzq02VYoAjJMsVYVKHZrDbdupW6Vq5cunHtRjQoMCAAIfkECRQABAAsCQADAAQABAAACAsABQgkILCgwYEBAQAh',
  0.46747487783432007),
 ('записиТелепрограммаVikerraadioOtseEsilehtJärelkuulamineSaatekavaPodcastidRaadioteaterRaadio',
  0.4659830331802368),
 ('deblogueroreflejoantecedentesexitlacuachebateysuteindesignableabsorbersexilatifundiosexibrezarsutemultiétnicosexiplinrapobrezarcorrentosoVd.lazadafisiochillidomabrezarsico-chuzaoutcolodrablogueroin',
  0.46159273386001587),
 ('2OtseEsilehtJärelkuulamineSaatedPodcastidKlassikaraadioOtseEsilehtJärelkuulamineSaatekavaPodcastidRaadio',
  0.4609595537185669),
 ('leilighetEiendomstypeSelveierleilighetPlass', 0.4550461769104004)]

【问题讨论】:

  • 如果您尝试使用较短版本的 'universitet' 的单词,结果如何?例如,“大学”?
  • "universit" 是一个词汇表,并返回正常响应。如果我尝试使用词汇表中单词 "pharmaceutical" 的较短版本,例如model.most_similar("pharmaceutica"),我还是胡言乱语
  • 你试过用“.vec”文件代替“.bin”吗?
  • @JoshVoigts 不,但如果我没记错的话,.vec 只包括词向量,而不包括构建词汇外词向量所必需的 N-gram跨度>
  • 也可能是gensim库不支持out-of-vocab词,你可以试试用fasttextpython库代替吗?

标签: python gensim fasttext


【解决方案1】:

如果我没记错“gensim.models.wrappers”已弃用,请尝试使用

从 gensim.models.fasttext 导入 FastText

来源:https://radimrehurek.com/gensim/models/wrappers/fasttext.html

【讨论】:

  • 实施此更改并不能解决问题并返回完全相同的乱码
  • 我已经尝试使用 cc.en.300 模型,并得到与您相同的输出。然而,对于另一个模型(wiki.simple),我得到了不错的词。这可能与模型有关。在我看来,您使用的是正确的方法。
  • 我同意。一秒钟前,我做了同样的事情,得出了同样的结论。仍然想知道 cc.en.300.bin 出了什么问题。我不认为这是训练中的错误,因为它是从官方 fasttext 网站检索到的
  • 只是添加另一个确认您的模型似乎正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2019-01-16
  • 2020-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多