问题标签 [lemmatization]

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 回答
23702 浏览

nlp - Stemmers vs Lemmatizers

自然语言处理 (NLP),尤其是英语,已经发展到如果存在“完美”词形还原器,词干提取将成为一种古老技术的阶段。这是因为词干分析器将单词/标记的表面形式更改为一些无意义的词干。

再一次,“完美”词形还原器的定义是有问题的,因为不同的 NLP 任务将需要不同级别的词形还原。例如在动词/名词/形容词形式之间转换单词

词干

词形还原剂

  • 所以问题是,英语词干分析器今天有用吗?因为我们有大量的英语词形还原工具

  • 如果不是,那么我们应该如何继续构建可以接受 、 和 预处理的强大词nounifyverbify还原 器adjectifyadverbify

  • 词形还原任务如何轻松扩展到与英语具有相似形态结构的其他语言?

0 投票
0 回答
957 浏览

c# - Solr 中的词干查询

我们有一个基于 Solr 的搜索系统,它使用 C# 中的 Solrnet 库,它支持一些高级搜索功能,如模糊、同义词和词干。虽然所有这些都有效,但对词干搜索的期望似乎是通过缩减词干提取和通过扩展词干提取以涵盖单词的语法变化。一个用例会更清楚:

  • 寻找鱼也会找到钓鱼
  • 搜索已应用也会找到应用、应用和应用

我们使用带有 SnowballPorterFilterFactory 的 CopyField 实现了词干提取。结果,当搜索燃烧时,结果返回燃烧燃烧,但是当搜索燃烧时,结果没有返回燃烧燃烧燃烧

由于所有支持 Lucene/Solr 的词干分析器都使用归约词干提取,我们不确定如何处理。根据 Solr 维基:

词干提取的相关技术是词形还原,它允许通过扩展“词干”,获取词根并将其“扩展”为所有各种形式。词形还原可以在插入时或查询时使用。Lucene/Solr 没有对词形还原的内置支持,但可以使用您自己的字典和 SynonymFilterFactory 来模拟它

我们不确定如何在 Solr 中解决这个问题。有任何想法吗。

我们还考虑使用一些基于 C# 的词干分析器/词元分析器库来获取单词的根,并使用一些公共数据库(如 WordNet)来提取词干的不同语法变体,然后将所有这些术语发送到 Solr 中进行查询。我们还没有做很多研究来找出一个稳定的 C# 词干分析器/词形提取器和一个 WordNet C# API,但看起来这太复杂了,它应该有一种从 Solr 中执行的方法。

Solr Schema 的相关部分:

当我为文档编制索引时,内容将按原样存储在 Content 字段中,并分别复制到 ContentSearch 和 ContentSearchStemming 以进行基于文本的搜索和词干搜索。因此,ContentSearchStemming 字段确实存储了词干/简化形式。我已经使用 Luke 以及 Admin Schema Browser --> Term Info 进行了检查。在 Admin Analysis 屏幕中,我测试并发现如果我索引文本“burning”,它会被缩减为并存储为“burn”。到目前为止,一切都很好。

现在在 UI 中,

  • 假设用户输入术语“burn”并检查词干选项。期望是,由于用户已指定词干,因此应返回术语“burn”以及所有词干为的词的结果“烧”即烧、烧、烧等。
  • 假设用户输入术语“刻录”并检查词干选项。期望是,由于用户已指定词干,因此应返回术语“burning”以及所有词干为“burn”的词(即burn、burn、burns等)的结果。

提交给 Solr 的查询:

从调试信息:

因此,当返回结果时,我只会使用“burn”一词突出显示命中,尽管同一个文档包含诸如burning 和burns 之类的术语。

我认为词干应该像这样工作:

  1. 查询分析器链中的词干过滤器会将输入词缩减为其词干。燃烧 --> 燃烧
  2. 查询组件应该扫描这些术语并匹配那些在术语的词干与输入词的词干之间找到匹配的词。烧伤-->烧伤(匹配)烧伤-->烧伤

第一点正在发生。但看起来它正在执行与词干“burn”匹配的基于精确文本的搜索。因此,烧伤或烧伤不会得到回报。

希望我能够说清楚。

0 投票
1 回答
1567 浏览

c# - 如何在 Lucene.NET 中删除复数?

我正在尝试从文本中提取一些关键字。它工作得很好,但我需要删除复数。

由于我已经在使用 Lucene 进行搜索,因此我正在尝试使用它从索引词中提取关键字。

第一,我在 RAMDirectory 索引中索引文档,

然后,我提取关键字:

在术语列表中,我可以使用“总统”和“总统”之类的术语我该
如何删除它?
我的 CustomStandardAnalyzer 使用这个:

所以我已经使用了 SnowballFilter(使用正确的语言特定词干分析器)。我怎样才能删除复数?

0 投票
1 回答
1999 浏览

python - NLTK 单词词形还原

我正在尝试对带有NLTK.

我现在可以找到的是,我可以使用该stem包获得一些结果,例如将“汽车”转换为“汽车”,将“女性”转换为“女人”,但是我无法对带有“确认”之类的词缀的词进行词形还原。

当使用WordNetLemmatizer()on "acknowledgement" 时,它返回 "acknowledgement",而 using.PorterStemmer()时,它返回 "acknowledge" 而不是 "acknowledge"。

谁能告诉我如何消除词缀?
说,当输入是“确认”时,输出是“确认”

0 投票
1 回答
1927 浏览

nlp - 寻找具有不同形式的英文单词的数据库或文本文件

我正在做一个项目,我需要获取给定单词的词根(词干)。如您所知,不使用字典的词干算法并不准确。我也尝试了 WordNet,但它对我的项目不利。我找到了 phpmorphy 项目,但它不包含 Java 中的 API。

此时我正在寻找具有不同形式的英文单词的数据库或文本文件。例如:

运行 运行 运行 ... 包括 包括 包括 ... ...

感谢您的帮助或建议。

0 投票
1 回答
3557 浏览

python-2.7 - NLTK 中 compat 的导入错误并使用 BrowServer 浏览 NLTK Wordnet 数据库进行词形还原

此处对用例的扩展- NLTK 单词词形还原

我在我的计算机上安装了 nltk(包含书中的所有模块和语料库)。我的用例是为我的数据集探索和对比一些词形还原和词干提取方法(我尝试了 Porter lemmatization,它奏效了)

我试图使用Wordnet的词形还原,正如@Chthonic Project 在这里NLTK words lemmatizing 所描述的那样。但是它指向的源代码(参见这里http://nltk.org/_modules/nltk/app/wordnet_app.html)需要来自 nltk 的兼容模块。

我用谷歌搜索了 compat 的导入错误(它看起来像兼容?),这是我在我的 ubuntu 盒子上尝试的: -

须藤找到。-name compat*返回以下文件。我还尝试了sudo find -name "trac" -type d,它什么都不返回。

我看到我应该在同样的文件夹 /usr/lib/python2.4/site-packages/Trac-0.11.1-py2.4.egg/trac/ 中找到一些带有“trac/tests/functional/fixes”的模块测试/功能/

来源:http ://biodegradablegeek.com/2008/08/workaround-for-importerror-cannot-import-name-compat-issue-in-trac-011x/#sthash.NhAThk6e.dpuf

问题 :

1.我错过了什么?这是 trac/tests 的问题吗?

2.有没有办法可以使用wordnet进行词形还原(from nltk.corpus import wordnet as wn 工作得很好。发布导入错误已解决,我该如何使用这个模块http://nltk.org/_modules/ nltk/app/wordnet_app.html(我试图从这个页面本地构建源代码,即文件browserver.py,当我用compat遇到导入错误时)

提示:如果您提供解决方案,还请提及如何在我的 windows 环境中解决此问题(我可以互换使用 windows 和 ubuntu,具体取决于上下文)

我从 find 看到的文件。-名称兼容*

我在 python 2.7

0 投票
1 回答
7537 浏览

nltk - 在 NLTK 中提取非结构化文本

我尝试了正则表达式词干分析器,但我得到了数百个不相关的标记。我只是对“玩”词干感兴趣。这是我正在使用的代码:

上面的结果是;

我正在尝试清理.txt文件(全部小写,删除停用词等),将一个单词的多个拼写规范化为一个并进行频率分布/计数。我知道该怎么做FreqDist,但是关于我在哪里做词干有什么建议吗?

0 投票
2 回答
247 浏览

python - Python 正则表达式或大小写

我有一个小模块,可以获取单词的引理及其复数形式。然后,它在句子中搜索以任一顺序包含两个单词(单数或复数)的句子。我让它工作,但我想知道是否有更优雅的方式来构建这个表达式。谢谢!注意:Python2

然后搜索:

0 投票
1 回答
3686 浏览

nlp - 希伯来语有没有好的词干分析器?

我正在为希伯来语寻找一个好的词干分析器 - 我使用谷歌一无所获......

HebMorph 网站上,它说:

Stem and Lemma originally have different meanings, but for Semitic languages they seem to be used interchangeably.

这是否意味着出于 NLP 目的,我可以使用引理代替词干?请记住Stemmers are much simpler, smaller and usually faster then lemmatizers, and for many applications their results are good enough. Using a lemmatizer for that is a waste of resources.:(来源

谢谢你。

0 投票
2 回答
11299 浏览

python - 非英语单词的词形还原?

我想应用词形还原来减少单词的屈折形式。我知道 WordNet 为英语提供了这样的功能,但我也有兴趣对荷兰语、法语、西班牙语和意大利语单词应用词形还原。有没有任何值得信赖和确认的方法来解决这个问题?谢谢!