我有一个带有POS标记的平行语料库文本文件,我想在这个文件中进行单词重新排序,这样“可分离短语动词粒子”将出现在短语动词的“动词”旁边(“make up a plan”而不是“make a plan up”)。用于统计机器翻译系统中的预处理。以下是POS标记文本文件中的一些示例行:
我想把所有的粒子(在例子中:out_RP,off_RP,out_RP,down_RP)移到最接近的前一个动词(即,与粒子结合构成短语动词的动词)的旁边。以下是更改词序后的线条:
到目前为止,我已经尝试使用python和正则表达式通过使用关于芬德尔公司名称:
import re
file=open('first100k.txt').read()
matchline3='\w*_VB.?\s\w*_DT\s\w*_NN\s\w*_RP'
wordorder1=re.findall(matchline3,file)
print wordorder1
这将找到词序为1的所有短语动词(见下文),但这是我所能找到的,因为我不知道如何移动动词旁边的粒子。有什么想法可以正确地解决这个问题(不一定要使用python和regex)?我希望能够搜索所有短语动词,并按以下词序移动粒子:
(使用的标记取自Penn Treebank标记集(http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html)(x表示可选字符,以便包括所有动词形式,而*表示通配符)
*\em>VBx+*\u DT+*.JJ+*\u NNS+*\u RP
*\u VBx+*\u PRP$+*\u NN+*\u RP
*\em>VBx+*\u PRP$+*\u NNS+*\u RP
*\u VBx+*\u NNP+*\u RP
*\u VBx+*\u JJ+*\u NNP+*\u RP
*\u VBx+*\u NNPS+*\u RP
*\u VBx+*\u PRP+*\u RP
提前感谢您的帮助!
我不建议在这里使用正则表达式。它绝对不像在空白处拆分后遍历每一行,可能重新排列列表,最后连接起来那样直观。你可以试试这样的方法
使用此代码,如果
^{pr2}$corpus.txt
读取运行后,
reordered_corpus.txt
将是相关问题 更多 >
编程相关推荐