如何调整编辑距离来对语言上相似的单词进行分类(例如动词时态、形容词比较、单数和复数)

发布于 2024-12-25 04:21:35 字数 600 浏览 1 评论 0原文

我不知道如何完成这项任务。我正在计算一个单词的频率,实际上是该单词的基本形式(例如,跑步将被计为跑步)。我查找了 Levenshtein 距离的一些实现(我遇到的一个实现是 来自 dotnerperls)。

我也尝试过双 Metaphone,但这不是我想要的。

因此,请给我一些关于如何调整 Levenshtein 距离算法来对语言上相似的单词进行分类的想法,因为该算法仅用于确定所需的编辑数量,而不考虑它们在语言上是否相似

示例: 1.“running”将被算作“run”一词出现的一次 2.“word”同样会出现“word” 3.“fear”不会被算作“gear”的出现

此外,我正在用 C# 实现它。

提前致谢。

编辑:我按照雷内的建议进行了编辑。 另一个注意事项: 我正在尝试考虑一个单词是否是另一个单词的子串,但该实现不会那么动态。 我认为的另一个想法是:“如果将 -s 或 -ing 添加到 string1,string1 == string2,则 string2 是 string1 的出现。”然而,情况并非如此,因为有些单词的复数形式不规则。

I am out of ideas on how to complete this task. I am counting the frequency of a word, actually the base form of the word (e.g. running will be counted as run). I looked up on some implementations of Levenshtein distance (one implementation I run into is from dotnerperls).

I also tried the double Metaphone, but it isn't what I'm looking for.

So, please give me some ideas on how to tweak Levenshtein distance algorithm in classifying linguistically similar words since the algorithm is only for determining the number of edits needed not considering if they are linguistically similar or not

Example:
1. "running" will be counted as one occurrence of the word "run"
2. "word" will likewise be an occurrence of "word"
3. "fear" will NOT be counted as an occurrence of "gear"

Also, I am implementing it in C#.

Thanks in advance.

Edit: I edited it as Rene suggested.
Another note:
I am trying to consider to consider if a word is a substring of another word but that implementation will not be as much dynamic.
Another idea I think is: "if adding -s or -ing to string1, string1 == string2, then string2 is an occurrence of string1." However, this is not the case as some words have irregular plurals.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如若梦似彩虹 2025-01-01 04:21:35

您尝试解决的任务称为 Stemming词形还原

正如您已经想到的那样,编辑距离不是解决此问题的方法。
常见的英语词干算法包括 Porter-和 Snowball-Stemmer。
如果您用 google 搜索,我相信您会找到其中之一的 C# 实现。

The task you are trying to solve is called Stemming or Lemmatisation.

As you figured out already, Levenshtein-Distance is not the way to go here.
Common stemming-algorithms for english include the Porter- and Snowball-Stemmer.
If you google for that I'm sure you will find a C#-implementation of one of them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文