提问人:Tavlin 提问时间:2/8/2023 最后编辑:Pawel KamTavlin 更新时间:3/1/2023 访问量:119
如何从字符串中提取非英语地址
How to extract a non-English address from a string
问:
如果这里有人知道一个 python 库,该库只能从整个消息中提取土耳其的地址(文本最初是土耳其语),那将是一个很大的帮助。
一个翻译的例子是:
“嗨,我叫塞勒姆,我有关于坠机现场的信息 .....(地址在这里),非常感谢。
我试着在网上寻找,但没有找到一个在土耳其地址上有功能的库,只有一些针对美国的 NLP 项目。 输入为纯文本。我已经将其翻译成英文,但我不知道如何从整封邮件中具体提取地址。
答:
0赞
Pawel Kam
2/9/2023
#1
您正在寻找个人身份信息 (PII) 检测软件。
这个领域有很多开源库,尽管我不知道其中哪一个(如果有的话)适合处理你的用例。另一个需要考虑的问题是,您希望在配置和编写其他软件上花费多少时间。值得先检查一下它们,因为它们在许可证规定范围内是免费的。
接下来,您应该考虑使用付费软件进行 PII 检测。有很多这样的产品。您可能应该搜索专注于处理土耳其语地址名称的软件,这些名称对于某些工具来说可能过于具体。我是 AWS 人,所以我使用 Amazon Comprehend,但也有其他解决方案,例如用于语言的 Azure 认知服务等。请在下面找到一个示例,说明如何使用 Amazon Comprehend detect_pii_entities
API 实现这一点。
import boto3
from botocore.exceptions import ClientError
client = boto3.client('comprehend')
text = 'Hi, my name is Salem and I have information " \
"about a crash site at Sultan Ahmet, Ayasofya Meydanı No:1, 34122 Fatih/İstanbul, Turkey, Many Thanks.'
try:
response = client.detect_pii_entities(Text=text, LanguageCode='en')
entities = response['Entities']
except ClientError:
entities = [] # no PII entities detected
在 API 响应中,您应该获得一个 JSON 对象,用于确定地址的开始和结束位置。
{
"Entities": [
{
"Score": 0.9998736381530762,
"Type": "NAME",
"BeginOffset": 15,
"EndOffset": 20
},
{
"Score": 0.9996119737625122,
"Type": "ADDRESS",
"BeginOffset": 66,
"EndOffset": 131
}
]
}
例如,您可以循环访问实体,并通过原始文本中的索引获取地址。
addresses = [e for e in entities if e['Type'] == 'ADDRESS']
for a in addresses:
print(text[a['BeginOffset']:a['EndOffset']])
# prints "Sultan Ahmet, Ayasofya Meydanı No:1, 34122 Fatih/İstanbul, Turkey"
请注意,此特定工具是付费的,您必须在使用它之前进行身份验证。
评论