在二维数组中转换单词列表及其形态分割

2024-06-01 12:39:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,其中有一个单词列表及其形态分段:

例如:

aims aim:aim_V s:+PL, aim:aim_V s:+3SG

airline air:air_N line:line_N

alarm's alarm:alarm_N 's:+GEN

alchemists alchem:alchemy_N ist:ist_s s:+PL

我想在Python的2D数组中转换这个文本文件,其中第一个维度是单词,第二个维度是表示单词形态分段的字符串

例如,对于单词“airline”,词形切分应为BMEBMME,其中:

  • B是变形的开始
  • M是变形的中间字符
  • E是变形的结尾

我们还有代表单个字符变形的S,例如对于“aims”,我们有bme作为其形态分割。你知道吗

单词已经在一行的右边被分割成了变形。你知道吗

我非常感谢你的帮助:)


Tags: 列表lineair字符单词形态aimpl
1条回答
网友
1楼 · 发布于 2024-06-01 12:39:48

试试这个:

file = 'myfile'

fh = open(file)

segArr = []
for line in fh:
        list = line.split()

        output = '('+list[0]+','
        for word in list[1:]:
                fragments = word.split(':')
                fragment = fragments[0]
                if len(fragment) == 1:
                        output += 'S'
                else:
                        output += 'B'+'M'*(len(fragment)-2)+'E'
        segArr.append(output+')')

print (segArr)

使用上述示例可以得出:

['(aims,BMESBMES)', '(airline,BMEBMME)', "(alarm's,BMMMEBE)", '(alchemists,BMMMMEBMES)']

我怀疑alarm中撇号的处理是否正确,但这只是一个开始!你知道吗

相关问题 更多 >