如何删除蟒蛇中的POS标签并打印保留子树顺序的树

时间:2018-02-23 11:53:42

标签: python-3.x nltk

我是python的新手,需要以下方面的帮助。 我有一个格式的字符串:

(S Silver / RB(Chunk 42 / CD inch / NN)LED / NNP HD / NNP Nakamichi / NNP Smart / NNP Flat / NNP(Chunk 3D / CD TV / NN))

我想要的输出: 银色,42英寸,LED,Nakamichi,智能,平板,3D电视

基本上我想在打印时将子树保留为单个字符串。

请帮忙

1 个答案:

答案 0 :(得分:1)

首先,您应该只使用您自己尝试的一些代码发布到SO,因此我们可以看到您已经做出任何努力来解决您自己的问题。在你所展示的状态下获得帮助只是人们的良好愿望,但可能你的帖子只会被低估。

无论如何,你在这里展示的模式似乎没有遵守任何规则,例如,'Silver'部分从它上面剥离'/ RB'字符串并且输出中的'42英寸'元素没有仅剥离其他字符串,即'/ CD'和'/ NN',但也应连接为一个字符串。除非你搞砸了你的逗号而你想要一个单独的字符串(不是列表,就像你发布的那样),那么:

text = '(S Silver/RB (Chunk 42/CD inch/NN) LED/NNP HD/NNP Nakamichi/NNP Smart/NNP Flat/NNP (Chunk 3D/CD TV/NN))'
split_text = text.split(' ')
new_text = ''
for item in split_text:
    if item[0].isnumeric():
        new_text += item[:item.find('/')] + ' '
    elif item[0] == '(':
        pass
    else:
        new_text += item[:item.find('/')] + ' , '
new_text = new_text[:-3]
new_text

输出:

'Silver , 42 inch , LED , HD , Nakamichi , Smart , Flat , 3D TV'

仍然没有什么意义,因为字符串很短并且没有规则的模式(除非,正如我所说,你搞砸了显示你真正想要的东西)。