gpt4 book ai didi

algorithm - 词干比较算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:26:03 27 4
gpt4 key购买 nike

我正在编写一个程序,用于对波兰语进行单词变格。在这种语言中,词干在某些情况下可能会有所不同(由于腭化或移动/转瞬即逝的 e 和其他影响)。

例如,我们有单词“karzeł”,它是单词的基本字典形式。它的词干也是“karzeł”。但这个词的属格形式是“karła”,词干是“karł”。我们可以在这里看到 'e' 消失了,'rz' 变成了 'r'。

另一个例子:
'uzda' -> stem 'uzd'
'uździe' -> 词干'uździ'
交替:'zd' -> 'ździ'

我只想在字典中存储词干的基本形式(“karzeł”和“uzd”),当我将词干“karł”或“uździ”放入我的程序时,它会找到合适的基本词干。交替只发生在词干的末尾,最多包含 4 个字母。

是否有任何算法可以做到这一点? Levensthein 距离平等对待所有字母,因此如果我键入词“barzeł”,那么到词干“karzeł”的距离将小于到词干“karł”的距离。

我也考虑过神经网络,但我不确定如何编码单词(为每个词干变体指定不同的 ID?)。

另一个想法是编写算法,它可以进行反向交替并创建一组可能的词干并尝试在字典中找到它们。

我想强调的是,我只想存储基本形式的词干,其他一切都是即时生成的。

最佳答案

首先,我记得看到过一些关于波兰语形态学的项目。所以我会先看看它们,然后再开始你自己的。

关于 Levenshtein,正如 Pierre 在评论中正确指出的那样,可以自定义距离函数。它应该是。让我这样说吧:不要将 Levenshtein 视为一种算法,而是将其视为对特定错误模型的解决方案。首先,他提出了一个模型,该模型表示当您键入一个单词时,由于某些随机过程(手指没有按下正确的键),每个字母都可能被删除或替换为另一个字母。那么,他的算法就是这个模型下的极大似然解的生成器。允许的错误越多,这一系列错误实际发生的概率越小,得分就越大。

不过,您(含蓄地)提出了一个非常不同的假设。波兰语词干在结尾处可能具有一定的灵 active (一些您在此框架内不完全理解的语言过程)。然后,当您去掉后缀(或类似的东西)时,有以下三个选项:1)你这里有可能只是你存储在字典中的不同形式的词干,或者2)它是一个完全不同的词干,或者3)你不正确地剥离了你的后缀,你所拥有的根本不是词干。例如,您可以通过查看假定词干开头有多少字母与某些字典条目匹配来启发式地估计这些概率(如何找到这些条目是一个相关但不同的问题)。然后您可以根据您的指标/启发式选择最合理的猜测。

现在请注意,您可以使用任何算法在字典中查找候选项。包括 Levenshtein 算法——只要你有理由相信正确的算法会被挑选出来。但很明显,您最好编写自己的字典搜索算法来遵循您自己的指标或模拟它。例如,通过为单词开头的字母更改提供最大/禁止的成本,并在接近结尾时减少它。

关于algorithm - 词干比较算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com