【问题标题】:Transforming a list of words and their morphological segmentations in a 2D array在二维数组中转换单词列表及其形态分割
【发布时间】:2017-08-02 15:58:04
【问题描述】:

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

例如:

瞄准:aim_V s:+PL, 瞄准:aim_V s:+3SG

航空公司air:air_N line:line_N

alarm的闹钟:alarm_N's:+GEN

炼金术士 alchem:alchemy_Nist:ist_s s:+PL

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

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

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

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

单词已经在一行的右侧被分割成变形。

非常感谢您的帮助:)

【问题讨论】:

  • 是“目标”BMEB 的形态分割吗?
  • 对不起,我错过了代表单字符变形的 S
  • 所以目标将是 BMES
  • 嗯,有趣的问题!我会考虑的。
  • 好的,谢谢!我正在尝试在行右侧的形态分割中使用“:”符号之前的字符

标签: python arrays text-files


【解决方案1】:

试试这个:

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

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

【讨论】:

  • 太棒了!撇号也是正确的!非常感谢!
  • 不客气!正如我所说,有趣的问题。感谢您接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 2016-09-24
  • 2022-06-17
  • 2014-10-13
  • 2013-12-13
  • 2012-01-09
  • 1970-01-01
相关资源
最近更新 更多