问题标签 [oov]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1325 浏览

python - 将未知单词解析为已知单词的有效方法?

我正在设计一个文本处理程序,它将从一个长的逐项文本文档中生成一个关键字列表,并为含义相似的单词组合条目。那里有一些指标,但是我遇到了一个新问题,即处理不在我使用的字典中的单词。

我目前正在使用 nltk 和 python,但我这里的问题具有更抽象的性质。给定一个不在字典中的单词,将它解析为字典中的单词的有效方法是什么?我目前唯一的解决方案是遍历字典中的单词并从输入的单词中选择具有最短 Levenshtein 距离(编辑距离)的单词。

显然,这是一种非常缓慢且不切实际的方法,我实际上并不需要字典中的绝对最佳匹配,只要它是一个包含的单词并且非常接近。在解决方案中,效率对我来说更为重要,但也需要基本的准确性。

关于如何将某些未知单词通常解析为字典中的已知单词的任何想法?

0 投票
2 回答
7034 浏览

nlp - 词性标注:标注未知词

在词性标注器中,给定句子的最佳可能标签是使用 HMM 确定的

但是当训练语料库中没有出现“Word”时,P(Word/Tag) 对给定的所有可能的标签产生零,这就没有选择最好的空间了。

我尝试了几种方法,

1) 为所有未知词分配少量概率,P(UnknownWord/AnyTag)~Epsilon... 意味着这通过分配恒定概率完全忽略了未知词的 P(Word/Tag)。所以对未知词的决策是先验概率。正如预期的那样,它不会产生好的结果。

2)拉普拉斯平滑我对此感到困惑。我不知道(1)和这个有什么区别。我理解拉普拉斯平滑的方式将常数概率(lambda)添加到所有未知和已知单词。所以所有未知单词将获得恒定概率(lambda 的分数)并且已知单词概率将相对相同,因为所有单词的概率增加了拉姆达。拉普拉斯平滑与前一个相同吗?

*) 有没有更好的方法来处理生词?

0 投票
1 回答
1885 浏览

feature-extraction - 如何处理 tf-idf 中非常不常见的术语?

我正在实现一个天真的“关键字提取算法”。我是自学成才的,所以我缺乏一些在线文学中常见的术语和数学。

因此,我正在查找文档的“最相关关键字”:

  1. 我计算每个术语在当前文档中使用的频率。我们称之为tf
  2. 我查看了这些术语在整个文档数据库中的使用频率。我们称之为df
  3. 我通过r = tf / df计算每个术语的相关权重r

每个文档都是语料库的适当子集,因此没有文档包含不在语料库中的术语。这意味着我不必担心被零除。

我按它们的r对所有术语进行排序,并保留许多最重要的术语。这些是与本文档最密切相关的顶级关键字。本文档中常用的术语更为重要。在整个文档数据库中通用的术语不太重要。

我相信这是tf-idf的一种幼稚形式。

问题是,当术语在整个数据库中非常罕见但出现在当前文档中时,它们的r值似乎太高了。

由于样本量小,这可以被认为是某种人工制品。弥补这一点的最佳方法或通常方法是什么?

  • 丢弃在整个数据库中不常见于某个阈值的术语。如果是这样,该阈值是如何计算的?似乎它取决于太多因素而不能成为硬编码值。
  • 可以通过某种数学函数(例如平方反比或余弦)对其进行加权或平滑吗?

我已经尝试在网上搜索并阅读tf-idf,但我发现的大部分内容都是比较文档,我对此并不感兴趣。此外,其中大多数的解释与行话和公式的比例都很低。

(事实上​​,我的项目是对这个问题的概括。我真的在 Stack Exchange 网站上使用标签,所以术语的总数很少,停用词无关紧要,低使用率的标签可能比低使用率的词更常见在标准情况下。)

0 投票
2 回答
1571 浏览

nlp - 未知和已知单词的词性

未知词的词性标注和已知词的词性标注有什么不同。是否有任何工具可以预测单词的词性标记..

0 投票
1 回答
671 浏览

ios - iOS 上的语音识别 - 在 iOS 上将 OOV 单词转换为音素?

我已经尝试过,如 StackOverflow 上的建议,Openears 成功,并从 NSSTRINGS 数组生成自定义词汇表。但是,我们还需要从通讯录中识别姓名,而这里的回退方法不可避免地经常会惨败……</p>

我可以自己编写一个解析器并动态地将文本(主要是法语和荷兰语发音的名称)转录为音素,但这将是很多(猜测)工作……。我很确定我需要的数据是在识别过程中的某个地方生成的,所以也许有人可以以我可以在 iOS 上利用的方式将我指向 OpenEars 或 Flite 代码中的一个钩子?

或者其他一些可以将用户语音转换为我可以输入 Openears 的音素字符串的库?

0 投票
2 回答
2031 浏览

export - fasttext:有没有办法导出 ngram?

我是 DL 和 NLP 的新手,最近开始通过 gensim 使用预训练的 fastText 嵌入模型 (cc.en.300.bin)。

我希望自己能够通过将单词拆分为 n-gram 并查找每个 n-gram 的向量来计算词汇表外单词的向量。

我找不到导出模型一部分的 n-gram 向量的方法。我意识到它们是散列的,但也许有办法(不一定使用 gensim)来获取它们?

任何见解将不胜感激!

0 投票
3 回答
692 浏览

word2vec - Handling OOV words in GoogleNews-vectors-negative300.bin

I need to calculate the word vectors for each word of a sentence that is tokenized as follows:

If I was using the pretrained [fastText][1] Embeddings: cc.en.300.bin.gz by facebook. I could get by OOV. However, when I use Google's word2vec from GoogleNews-vectors-negative300.bin, it returns an InvalidKey Error. My question is how to we calculate the word vectors that are OOV then? I searched online I could not find anything. Of course on way to do this is removing all the sentences that have words not listed in the google's word2vec. However, I noticed only 5550 out of 16134 have words completely in the embedding.

I did also

However, tensorflow 2 returns an error.

Any help would be greatly appreciate it.

0 投票
1 回答
170 浏览

python-3.x - 无法从其 vector_ngrams 中重现预训练的词向量

只是好奇,但我正在调试 gensim 的 FastText 代码以复制词汇表外(OOV)单词的实现,但我无法完成它。因此,我正在遵循的过程是用玩具语料库训练一个小型模型,然后比较词汇表中单词的结果向量。这意味着如果整个过程没问题,输出数组应该是相同的。

这是我用于测试的代码:

对于比较数组的每个维度,此脚本的输出都是 False。

如果有人能指出我是否遗漏了什么或做错了什么,那就太好了。提前致谢!

0 投票
1 回答
133 浏览

python - 查找与 OOV 词最相似的词

我正在使用 gensim 寻找与词汇外 OOV 词最相似的词。像这样的东西:

有没有办法实现这个任务?也欢迎使用 gensim 以外的选项。

0 投票
1 回答
100 浏览

pandas - 如何用词袋处理词汇以外的词

我正在尝试在基于文本的数据集上使用 ML 之前的 BoW。但是,我不希望我的训练集影响我的测试集(即数据泄漏)。我想在测试集之前在训练集上部署 BoW。但是,我的测试集与我的训练集具有不同的特征(即单词),因此矩阵的大小不同。我尝试在测试集中保留也出现在训练集中的列,但是 1)我的代码不正确,2)我认为这不是最有效的过程。我想我还需要代码来添加填充列?这是我所拥有的: