自然语言处理(NLP),尤其是英语,已经发展到这样一个阶段,如果存在“完美”的词干分析器,词干分析将成为一项古老的技术。这是因为词干分析器将单词/符号的表面形式改变为一些无意义的词干。
然后,由于不同的非线性规划任务需要不同级别的柠檬化,因此“完美”柠檬化器的定义再次受到质疑。E、 g.在动词/名词/形容词形式之间转换单词。
词干分析器
[in]: having
[out]: hav
柠檬酸酯
[in]: having
[out]: have
>
所以问题是,英语词干在今天有用吗?因为我们有过多的英语柠檬化工具
如果没有,那么我们应该如何继续构建健壮的引理器,以承担nounify
、verbify
、adjectify
和广告化
预处理?
如何将柠檬化任务轻松扩展到与英语具有相似形态结构的其他语言?
答案在很大程度上取决于我们所讨论的自然语言处理(NLP)中的任务或特定研究领域。
值得指出的是,已经证明,在某些特定任务中,例如情感分析(这是自然语言处理中最喜欢的子领域),在系统开发中使用词干分析器或Lemmatizer作为特征(训练机器学习模型),无论工具有多大,都不会对模型的准确性产生显著影响。尽管它使性能稍微好一点,但还有一些更重要的功能,如依赖解析,在此类系统中有很大的潜力。
值得一提的是,我们正在研究的语言的特点也应该得到考虑。
词干化或词形化的一个经典应用是搜索引擎结果的改进:通过将词干化(或词形化)应用于查询以及(在索引之前)所有索引的标记,搜索“有”的用户能够找到包含“有”的结果。
(可以说,动词在大多数搜索查询中有些不常见,但同样的原则也适用于名词,尤其是在具有丰富名词形态的语言中。)
为了改进搜索结果,词干(或引理)是否有意义(“have”)实际上并不重要。它只需要能够表示所讨论的单词及其所有屈折形式。事实上,一些系统使用数字或其他类型的id字符串来代替词干或引理(或基本形式或任何它可能被称为的形式)。
因此,这是一个应用程序的示例,其中词干分析器(根据您的定义)与lemmatizers一样好。
然而,我不太相信你对“词干分析器”和“lemmatizer”的(隐含的)定义被普遍接受。我不确定这些术语是否有任何公认的定义,但我对它们的定义如下:
词干分析器:使用规则和已知后缀列表,将屈折形式减少为词干或基形式的函数。
Lemmatizer:执行相同还原的功能,但使用全面的全表单字典,能够处理不规则表单。
基于这些定义,lemmatizer本质上是词干分析器的更高质量(也更昂贵)版本。
Q1:“[…]英语词干分析器今天有用吗?因为我们有过多的英语柠檬化工具。”
对词干分析器比lemmatizer简单、小巧,通常速度更快,对于许多应用来说,它们的结果已经足够好了。使用柠檬化工是浪费资源。例如,考虑信息检索中的降维。您可以在搜索的文档和查询中用driv替换所有drive/driving。只要它将屈折相关的单词聚集在一起,您就不在乎它是drive还是driv或x17a$。
问题2:“[…]我们应该如何构建能够进行名词化、详细化、形容词化和状语化预处理的健壮的引理化器?
你对引理的定义是什么,它包括派生(驱动-驱动)还是只包括屈折(驱动-驱动-驱动)?它考虑到语义学了吗?
如果你想包括派生词(大多数人会说包括动词化名词等),那么请记住派生词远比屈折词更不规则。有很多特质、差距等。你真的想改变(火车)和改变(硬币)有相同的引理吗?如果没有,边界在哪里?神经紧张,地球--地球人。。。这实际上取决于应用程序。
如果你考虑语义(根据上下文,银行将被标记为银行货币或银行河),你会走多深(你是否区分银行机构和银行建筑)?一些应用程序可能根本不关心这一点,一些可能想要区分基本语义,一些可能想要细粒度。
问题3:“如何将柠檬化任务轻松扩展到与英语具有相似形态结构的其他语言?”
你所说的“与英语相似的形态结构”是什么意思?英语几乎没有屈折词法。对于其他形态类型的语言(真正的屈折、粘合、模板等),有很好的引理化器。
除了粘合语言之外,我认为查找表(比如压缩的trie)是最好的解决方案。(可能有一些未知单词的备份规则,例如专有名称)。查找之后会进行某种消歧(从琐碎的-取第一个,或取与单词POS标记一致的第一个,到更复杂的)。更复杂的消歧通常是有监督的随机算法(例如TreeTagger或更快),尽管也已经将机器学习和手动创建的规则相结合(参见示例)。
显然,对于大多数语言,您不希望手动创建查找表,而是根据该语言的形态描述生成查找表。对于屈折变化的语言,你可以用哈吉克(Hajic)表示捷克语,米哈耶夫(Mikheev)表示俄语,或者,如果你敢的话,你可以用两级词法。或者你可以在两者之间做一些事情,比如Hana(我自己)(注意,这些都是完整的形态分析器,包括柠檬化)。或者你可以用一种无监督的方式学习lemmatizer,比如la Yarowsky和Wicentowski,可能需要手动后处理,纠正最频繁的单词。
有太多的选择,这真的取决于你想对结果做什么。
任务是: > 在输出屏幕顶部显示任何欢迎信息 创建变量来保存一杯柠檬水的价格。 显示每杯的价格。 询问用户的姓名,并将其存储为字符串对象。只要有可能,就用名字称呼用户。 询问用户他们想订购多少杯柠檬水。将其保存为具有适当数据类型的变量。 将8%的圣地亚哥税率作为常量变量存储在您的计划中。 计算小计、税金总额、总价,并显示在屏幕上。 询问用户想要如何支付柠檬水,并将输入保存为char变量。 要求用户
1、简言 先简要的说明一下自己情况,我是BOSS上柠檬微趣的HR联系我,我投完简历(服务端C++开发)一周后没信,主动联系HR后,HR告诉我简历没过。原因是项目经验不符合岗位需求。后来又说看能力尚可给个机会笔试。我也说明了自己刚做了一个服务器相关的项目,但是简历还没更新。(说项目是因为本来觉得肯定可以进面,没想到mad小丑了一波)。 2、题目回忆 一、给一个数组nums,让找出数组中每个元素的后面
腾讯柠檬清理是针对 macOS 系统专属制定的清理工具。主要功能包括重复文件和相似照片的识别、软件的定制化垃圾扫描、可视化的全盘空间分析、内存释放、浏览器隐私清理以及设备实时状态的监控等。重点聚焦清理功能,对上百款软件提供定制化的清理方案,提供专业的清理建议,帮助用户轻松完成一键式清理。 功能亮点 深度扫描清理:针对Xcode、Sketch等常见应用逐一定制扫描方案,精准分析应用文件,分类通俗易懂
我创建了一个数据框,其中包含要被词干化的句子。我想用雪球机来获得更高的分类算法精度。我该如何实现这一点?
1.自我介绍 2.说我基本都是Java,问我投的这个岗位是意向岗位吗hhhh我说转语言没问题 3.堆和栈的区别 4.内存区域 5.讲一讲HashMap 6.假如1000个元素,包括name和score,怎么实现查询,不能用已有的数据结构,那就自己实现一个HashMap,ok,讲讲思路 7.多态的特点,Java怎么实现多态 8.红黑树,时间复杂度,为什么要有红黑树这种数据结构 9.二分和红黑树在更新
投的C++,简历被unity 3D捞了下,问的其实和unity 3D没啥关系,时间在1h左右,权且记录下,牛友可以做个参考 自我介绍 C++内存分布 堆和栈的区别 堆和栈的内存是怎么增长的 指针和引用的区别 链表和数组的区别 算法题:链表相交的第一个位置 算法题:链表入环的第一个位置(讲到一半不会了,还好面试官提示下完成了) 算法题:将一个元素为n的有序数组放到一个容量为n-1的有序数组中去,怎么