- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用Gensim
用于加载德语.bin
来自Fasttext
的文件为了获得词汇表之外的单词和短语的向量表示。到目前为止,它运行良好,总体上取得了良好的结果。
我熟悉KeyError :'all ngrams for word <word> absent from model'.
显然,该模型并未为每种可能的 ngram 组合提供向量表示。
但现在我遇到了一个令人困惑的(至少对我来说)问题。
我举一个简单的例子:
该模型提供了短语 AuM Wert
的表示.
但是当我想获得 AuM Wert 50 Mio. Eur
的代表时,我会得到KeyError
上文提到的。因此,该模型显然具有较短短语的表示,但不具有扩展短语的表示。
它甚至返回 AuM Wert 50 Mio.Eur
的表示形式(我刚刚删除了“Mio”和“Eur”之间的空格)
我的意思是,错误中的陈述根本不正确,因为第一个示例表明它知道一些 ngram。有人可以向我解释一下吗?这里我不明白什么?难道我对ngram的理解错了?
代码如下:
from gensim.models.wrappers import FastText
model = FastText.load_fasttext_format('cc.de.300.bin')
model.wv['AuM Wert'] #returns a vector
model.wv['AuM Wert 50 Mio.EUR'] #returns a vector
model.wv['AuM Wert 50 Mio. EUR'] #triggers the error
提前致谢,
阿莫斯
最佳答案
我不确定是什么导致了您所看到的行为,尽管我有以下理论。
但是,请注意当前的 gensim 行为(通过 3.7.1)有时会返回 KeyError: all ngrams for word <...> absent
对于 OOV 单词,不符合 Facebook 原始 FastText 实现的行为,因此被视为错误。
应该会在下一个版本中修复它。您可以阅读change note about the new compatible behavior 。
因此,在不久的将来,使用最新版本的 gensim,您将永远不会看到这个“KeyError”。
与此同时,可能解释您所观察到的行为的因素包括:
FastText
。此外,训练文本的通常标记化只会传递单词标记,没有任何内部空格。因此,对于典型的模型来说,此类包含空格的短语不可能具有全词向量。而且,它们包含空格的字符 n 元语法也不会映射到训练期间看到的 n 元语法。如果您在 gensim 3.7.1 及更早版本中获得向量,那是因为在训练中发现了一些不包含空格的 n 元语法。 (在 3.7.1 后,你总是会得到一个向量,尽管它可能是由查询词的新颖 n-gram 与训练中学习的 n-gram 的随机碰撞组成的,或者只是由随机初始化但从未训练过的 n-gram 组成的模型的 n-gram 哈希表内的向量。)<
和>
。默认的 n-gram 大小范围是 4 到 6 个字符。所以,你的字符串 'AuM Wert'
其 n 元语法中将包括 '<AuM'
, 'Wert'
,和'ert>'
。 (它的所有其他 n-gram 都将包含空格字符,因此不可能位于在没有空格的单词训练期间学习的 n-gram 集合中。)。但请注意,出现错误的较长短语将不包含n-gram 'ert>'
,因为前面的结束标记已被替换为空格。因此,较短短语的 n 元语法不是较大短语 n 元语法的正确子集 - 并且较大短语可能会出错,而较短短语不会出错。 (没有空格的较长短语不会出错,还包括一些额外的 4-6 个字符的 n 元语法,这些 n 元语法可能存在于训练数据中,但错误短语没有。)关于python - 简短短语的快速文本表示,但不适用于包含短短语的较长短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028281/
我们正在使用一个脚本,它会返回以下内容120007CONSULTA DE DEUDA CORRECTA.01TEST我正在尝试从awk中获得 CONSULTA DE DEUDA CORRECTA 的短
我正在使用以下查询: { "_source": [ "title", "bench", "id_", "court",
例如,我有数十亿个短语,我想要将相似的短语聚集在一起。 > strings.to.cluster <- c("Best Toyota dealer in bay area. Drive out wit
我有一个包含大约 1000 个关键字/短语(一到四个字长)的数据库表 - 这个表很少更改,所以我可以将数据提取到更有用的东西中(比如正则表达式?) - 所以这没有找到/基于自然语言处理猜测关键词..
我想确保我从一开始就做对了,但我找不到好的答案,所以我想问一下。 我要做的是以下内容。 以一句话为例:The quick brown fox jumped over the lazy dog"并使用全
我有一个表单,其中有两个单选按钮。 应该从字符串中搜索整个字符串,第二个应该搜索至少一个单词。 例如: 我将搜索“Awesome ideas for startup”。 如果我选中“搜索整个字符串/短
我有... 一组固定关键字和词组(大约 1,000,000 个),例如 birthday、happy new year、vacation等 10 到 500 字之间的一些可变文本。 我想…… 识别文本
有没有办法删除字符串中重复的和连续的单词/短语?例如。 [in]: foo foo bar bar foo bar [out]: foo bar foo bar 我试过这个: >>> s = 'thi
我正在寻找一种在文本中搜索短语或惯用表达的方法,无论时态或可能的介词/副词如何,例如如果我正在寻找 call off我还想找到 My boss called the meeting off. 之类的用
PowerShell 有一些语法特性,我找不到太多相关文档。今天我的问题是 ? {...} 例子 PS> Get-SPServiceInstance | ? {$_.GetType.toString(
我通过 PHP 使用 Solr 来搜索我网站的各个方面。我正在尝试实现一项功能,但找不到任何有关如何实现它的信息。 我有一组文档(评论),每个文档都与特定产品有关。 我想找到出现在单个产品的多条评论中
我正在从事自然语言生成任务,需要检索与 Cyc 术语等效的自然语言单词或短语。例如。 “#$EatingEvent”->“吃”或“#$Coyote-Animal”->“土狼”。 如何通过 Java A
我在使用 Java 中的以下正则表达式时遇到问题。我删除了双引号,以使其更具可读性。由于缺乏更好的词,我还将每个“组件”放在单独的行上(但实际的表达式会将行合并,行之间没有空格): (?:\bIN(?
我有一个 MySQL 数据库,我正在尝试使用 PHP 获取趋势主题(流行短语或单词)。我尝试了一些查询,但似乎没有什么对我有用。 最佳答案 您可以尝试创建一个包含两列的新表:WORD 和 COUNT,
我在 MySql 中有一个包含城市的表。 |---------------------|------------------| | ID | City
我正在处理搜索页面上的用户输入。如果用户选择“所有单词”类型的搜索,那么我会从搜索文本中删除所有 bool 搜索运算符,并在每个真实单词之间添加 ' AND '。在大多数情况下非常简单。但是,我不知道
我使用的语音识别软件给出的结果不是最佳的。 例如:session 返回为 fashion 或 mission。 现在我有一本像这样的字典: matches = { 'session': ['fas
我厌倦了使用 Gimp 无休止地滚动所有字体来不规律地搜索完美字体,所以我想:“为什么不为每种字体构建一个可视的 pangrams 列表”。 因此,我尝试构建一个 php 脚本,该脚本在 .fonts
如何编写一个 RegEx 模式来测试一个字符串是否包含多个具有以下结构的子字符串: "cake.xxx" xxx 是任何东西,但不是“奶酪”、“牛奶”或“黄油”。 例如: “我有一个 cake.hon
我有一个字段“部门”,它是一个列表:{“部门”:[“餐饮服务”,“软件开发”,“制造”,“部署”]}' 我想聚合“部门”中以“d”开头的元素。即,从所有记录进行部署。 我能够找到包含一个前缀为“d”但
我是一名优秀的程序员,十分优秀!