所有文本都保存在一行中

时间:2018-08-27 10:23:15

标签: python nltk pos-tagger

因此,我试图使用Python中的NLTK来对文本文件进行语音标记。 这是我使用的代码

import nltk
from nltk import word_tokenize, pos_tag
f = open('all.txt')
raw = f.read()
text = word_tokenize(raw)
paosted = nltk.pos_tag(text)
saveFile = open('ol.txt', 'w')
saveFile.write(str(paosted))
saveFile.close()

该代码确实起作用了,但是问题在于它将所有文本保存在一行中,如所附图片所示。 as shown here ..我知道我应该使用“ \ n”函数,但是我是python的新手,也不知道如何做,所以任何帮助将不胜感激:) ..

                      -------- UPDATE -----------

好吧,人们一直非常乐于助人,并提供了一些解决方案,例如以下代码:

import nltk
from nltk import word_tokenize, pos_tag
f = open('all.txt')
raw = f.read()
text = word_tokenize(raw)
paosted = nltk.pos_tag(text)
saveFile.write(str(paosted).replace('),' ,  '),\n'))
saveFile.close()

但是我仍然需要以段落的形式使用它,因为我将在一个一致性软件中使用它。请看以下截图: https://i.stack.imgur.com/tU1NW.png

3 个答案:

答案 0 :(得分:0)

paosted是一个元组列表,您可以对其进行迭代并将每个元组写入一行中

例如:

paosted = nltk.pos_tag(text)
saveFile = open('ol.txt', 'w')
for line in paosted:
    saveFile.write(str(line)+ "\n")
saveFile.close()

答案 1 :(得分:0)

相应地更新我的答案,

temp = []
for i in paosted:
    temp.append("_".join(i))

" ".join(temp)

答案 2 :(得分:0)

谢谢大家!我按照您的一些指示进行操作,我得到的最佳结果是以下代码:

import nltk
from nltk import word_tokenize, pos_tag
f = open('all.txt')
raw = f.read()
text = word_tokenize(raw)
paosted = nltk.pos_tag(text)
saveFile = open('output.txt', 'w')
saveFile.write(str(paosted).replace("('.', '.')" ,  "\n"))
saveFile.close()