我想解析一个包含非结构化文本的文本文件。我需要知道地址、出生日期、姓名、性别和身份证
. 55 MORILLO ZONE VIII,
BARANGAY ZONE VIII
(POB.), LUISIANA, LAGROS
F
01/16/1952
ALOMO, TERESITA CABALLES
3412-00000-A1652TCA2
12
. 22 FABRICANTE ST. ZONE
VIII LUISIANA LAGROS,
BARANGAY ZONE VIII
(POB.), LUISIANA, LAGROS
M
10/14/1967
AMURAO, CALIXTO MANALO13
在上面的例子中,前3行是地址,只有一个“F”的行是性别,DOB是“F”后面的行,DOB后面的名称,名称后面的ID,ID下面的12号是索引/记录号
但是,格式不一致。在第二组中,地址是4行,而不是3行,并且索引/记录号附加在名称之后(如果此人没有ID字段)。
我想把课文改写成以下格式:
name, ID, address, sex, DOB
这里是pyparsing解决方案(easy-to-copy code at the pyparsing pastebin)的第一步。根据交错的注释,遍历各个部分。
印刷品:
这可能有点过头了,但这类问题的前沿机器学习算法是基于conditional random fields。例如,Accurate Information Extraction from Research Papers using Conditional Random Fields。
有软件可以使训练这些模型相对容易。见Mallet或CRF++。
你必须利用文本的规律性和结构。
我建议您一次读一行并将其与正则表达式匹配以确定其类型,并在person对象中填写适当的字段。写出那个对象,并在得到已经填写的字段时启动一个新的对象。
相关问题 更多 >
编程相关推荐