如何在nltk.bigrams生成的二元组列表中查找首字母均大写的人名二元组?
你可以直接通过列表推导式遍历二元组列表,分别判断两个元素的首字母是否为大写即可,两种常用实现方式如下:
实现代码
方式1:仅校验首字母大写
不限制单词其余字符的大小写,适配所有首字母大写的场景:
filtered_bigrams = [ bg for bg in bigrams if bg[0][0].isupper() and bg[1][0].isupper() ]
方式2:严格校验标准人名格式
如果你的人名都是「首字母大写、其余字母小写」的标准格式,用istitle()方法更简洁:
filtered_bigrams = [ bg for bg in bigrams if bg[0].istitle() and bg[1].istitle() ]
异常兼容处理
如果分词结果中可能存在空字符串、单符号等异常内容,可以增加长度校验避免索引报错:
filtered_bigrams = [ bg for bg in bigrams if len(bg[0]) > 0 and len(bg[1]) > 0 and bg[0][0].isupper() and bg[1][0].isupper() ]
后续人名提取
筛选完成后可以直接拼接二元组得到完整人名字符串:
full_names = [' '.join(bg) for bg in filtered_bigrams]
内容的提问来源于stack exchange,提问作者user11096730
相关产品推荐
相关产品推荐

