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

时间:2017-03-12 16:35:42

标签: python arrays text-files

我有一个文本文件,其中包含带有形态分割的单词列表:

例如:

  

目标瞄准:目标_V s:+ PL,目标:目标_V s:+ 3SG

     

航空公司空运:air_N line:line_N

     

闹钟的闹钟:闹钟_N' s:+ GEN

     

炼金术士炼金术:alchemy_N ist:ist_s s:+ PL

我想在Python中的2D数组中对此文本文件进行转换,其中第一维是单词,第二维是表示单词形态分割的字符串

例如“航空公司”这个词。形态分割应该是BMEBMME,其中:

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

我们还有代表单字符变形的S,例如对于'目标'我们将BMES作为其形态分割。

这些单词已经被划分为一行右侧的变形。

我真的很感谢你的帮助:)。

1 个答案:

答案 0 :(得分:0)

试试这个:

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)']

我怀疑警报中对撇号的处理是否正确,但这是一个开始!