我有一个要从中提取文本数据的图像数据集。我将文本作为字符串,但现在想将此文本分隔为更结构化的形式。
数据如下所示:
Camden Row,Camberwell, S.E—A. Massey, M.D.4.
Campden Hill, Kensington.
(Hornton House).
Campden Hill Road, Kensington.
James, M.D. 6.
Canning Town. E—R. J. Carey (Widdicombe-
co ee
Cannon Street. E.C.—R. Cresswell, 151.
Cannon Street Road. E.—R. W. Lammiman, 106.
—J. R. Morrison, 57.—B. R. Rygate, 126.—
J. J. Rygate, M.B. 126.
Canonbury N. (see foot note)—J. Cheetham, M.D.
(Springjield House),
Canonbury Lane, N.—H. Bateman,
Roberts, 10.—J. Rose, 3.
如您所见,它涉及街道名称,后跟代表(N / S / E / W / NW / SE等)的字母,然后是人名和门牌号码。
到目前为止,我一直在使用python NLTK。我可以使用以下方法将街道,名称和数字提取为单个实体:
tagged = nltk.pos_tag(tokens)
我想要实现的是以下列表:
[street name, person, house_number]
例如:
[[Cannon Street Road, R. W. Lammiman, 106][Cannon Street Road, J. R. Morrison, 57]]
我的计划是使用街道名称作为起点的锚点,然后使用数字作为末尾的锚点,但是由于每条街道上有多个门牌号码,所以这有点复杂。
谁能建议一种可能适用于此的方法/正则表达式?
如果可以的话,谢谢!
詹姆士。
最佳答案
如果格式一致,则可以拆分字符串。
text = "Cannon Street Road. E.—R. W. Lammiman, 106.—J. R. Morrison, 57.—B. R. Rygate, 126.—J. J. Rygate, M.B. 126."
text = text.split("—")
infos = list()
streetname = text[0]
for i in text[1:]:
infos.append([streetname, i])
print(infos)
结果是:
[['加农街路。 E。”,“ R。 W. Lammiman,106。'],['Cannon Street Road。 E。”,“ J。 R. Morrison,57。'],['Cannon Street Road。 E。”,“ B。 R. Rygate,126。'],['Cannon Street Road。 E。”,“ J。 J.Rygate,工商管理硕士126.']]
关于python - 是否有python正则表达式来查找街道名称,然后是一个或多个人,然后是门牌号码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58625162/