gpt4 book ai didi

用于本地语言的 python 词干词

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:34 24 4
gpt4 key购买 nike

我在使用基于规则的算法来提取本地语言中的单词时遇到了一些问题。所以任何懂 python 的人都可以帮助我。

在我的语言中,有些单词通过重复前 2 或 3 个字符(发音)来实现复数化。

例如

Diimaa (root word)  ==> Diddiimaa(plural word)
Adii (root word) ==> Adadii(plural word)

所以现在我希望我的程序拒绝第一个示例中的“Did”和第二个示例中的“Ad”

下面是我的代码,没有返回任何结果

`def compput(mm):   
vv=1
for i in mm:
if seevowel(i)==1:
inxt=mm.index(i)+1
if inxt<len(mm)-1 and seevowel(mm[inxt])==0:
vv=vv+1
return vv
def stemm_maker(tkn):
for i in range(len(tkn)):
if (i[0] == i[2] and i[1] == i[3]):
stem = i[2:]
if compput(stem) > 0:
return stem
elif ((i[0] == i[2] or i[0]== i[3]) and i[1] == i[4]):
stem = i[3:]
if compput(self) > 0:
return stem
else:
return tkn
print(stem)`

最佳答案

解决这个问题的一种方法是使用正则表达式。

查看这些对(找到 here ):

adadii       adii
babaxxee baxxee
babbareedaa bareedaa
diddiimaa diimaa
gaggaarii gaarii
guguddaa guddaa
hahhamaa hamaa
hahapphii happhii

规则似乎是

if the word starts with XY...
then the reduplicated word is either XYXY... or XYXXY...

在正则表达式语言中,这可以表示为

^(.)(.)\1?(?=\1\2)

这意味着:

 char 1
char 2
maybe char 1
followed by
char 1
char 2

完整示例:

test = {
'adadii': 'adii',
'babaxxee': 'baxxee',
'babbareedaa': 'bareedaa',
'diddiimaa': 'diimaa',
'gaggaarii': 'gaarii',
'guguddaa': 'guddaa',
'hahhamaa': 'hamaa',
'hahapphii': 'happhii',
}

import re

def singularize(word):
m = re.match(r'^(.)(.)\1?(?=\1\2)', word)
if m:
return word[len(m.group(0)):]
return word

for p, s in test.items():
assert singularize(p) == s

关于用于本地语言的 python 词干词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31986950/

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