python 文本提取地址,如何在python中使用NLTK从原始文本中提取地址?

I have this text

'''Hi, Mr. Sam D. Richards lives here, 44 West 22nd Street, New

York, NY 12345. Can you contact him now? If you need any help, call

me on 12345678'''

. How the address part can be extracted from the above text using NLTK? I have tried Stanford NER Tagger, which gives me only New York as Location. How to solve this?

解决方案

Definitely regular expressions :)

Something like

import re

txt = ...

regexp = "[0-9]{1,3} .+, .+, [A-Z]{2} [0-9]{5}"

address = re.findall(regexp, txt)

# address = ['44 West 22nd Street, New York, NY 12345']

Explanation:

[0-9]{1,3}: 1 to 3 digits, the address number

(space): a space between the number and the street name

.+: street name, any character for any number of occurrences

,: a comma and a space before the city

.+: city, any character for any number of occurrences

,: a comma and a space before the state

[A-Z]{2}: exactly 2 uppercase chars from A to Z

[0-9]{5}: 5 digits

re.findall(expr, string) will return an array with all the occurrences found.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在 Python 提取对方的关键语句,需要先定义关键语句的标准。比如说,你可以定义关键语句为句子的首字母大写,或者包含某些特定的关键字。 一种方法是使用正则表达式来匹配关键语句。你可以使用 Python 的 `re` 模块来使用正则表达式。例如,下面的代码使用正则表达式来查找所有以大写字母开头的句子: ```python import re text = "The quick brown fox jumps over the lazy dog. Hello World!" pattern = r'[A-Z][^.!?]*[.!?]' key_sentences = re.findall(pattern, text) print(key_sentences) # ['The quick brown fox jumps over the lazy dog.', 'Hello World!'] ``` 另一种方法是使用 Python 的 `nltk` 库,该库提供了自然语言处理的功能。你可以使用 `nltk` 库的 `sent_tokenize` 函数来分割文本为句子,然后遍历每个句子并检查是否符合你定义的关键语句的标准。例如,下面的代码使用 `nltk` 库来查找所有以大写字母开头的句子: ```python import nltk text = "The quick brown fox jumps over the lazy dog. Hello World!" key_sentences = [] for sentence in nltk.sent_tokenize(text): if sentence[0].isupper(): key_sentences.append(sentence) print(key_sentences) # ['The quick brown fox jumps over the lazy dog.', 'Hello World!'] ``` 注意,上面两个例子使用的正则表达式和判断条件都是简单的例子,实际情 ### 回答2: 要在Python提取对方的关键语句,可以使用自然语言处理(NLP)技术和相关库。以下是一种可能的方法: 1. 导入所需的库:首先,需要导入一些处理自然语言的库,如`nltk`和`spacy`。这些库可以帮助我们对文本进行分词、标记和解析。 2. 定义文本:将对方的语句存储在一个变量,例如`text`。 3. 分词:使用分词器将文本分解成单独的词语。可以使用`nltk`库的`word_tokenize`函数或`spacy`库的`tokenizer`函数来完成这一步骤。它们将文本拆分成一个词汇列表。 4. 删除停用词:停用词是指在自然语言常见且不具有实际含义的词语,例如"a"、"the"和"is"等。可以使用`nltk`库的`stopwords`模块来获取常见的停用词列表。然后,通过将停用词从分词后的词汇列表移除来完成这一步骤。 5. 提取关键词:将分词后的文本传递给关键词提取器。可以使用`nltk`库的`PorterStemmer`或`spacy`库的`lemmatizer`来提取关键词。这些工具能够去除词汇的后缀,并将它们转换成原始形式,以更好地理解其含义。 6. 评分关键词:根据每个词语在原始文本的出现频率以及在文本的重要性进行评分。可以使用`nltk`库的`FreqDist`函数来实现这一步骤,它将计算每个词语在文本的频率。 7. 选择关键句:根据词语的评分,可以选择具有最高得分的句子作为关键句。可以使用`nltk`库的`sent_tokenize`函数将原始文本分解成句子,然后根据关键词的评分选择重要的句子。 8. 输出结果:将提取出的关键句输出到控制台或保存到文件,以供后续使用。 请注意,以上只是一种可能的方法,可以根据具体需求和数据类型进行调整和优化。自然语言处理是一个复杂且多样化的领域,可能需要更深入的研究和使用其他技术,如语义分析和机器学习,以提高关键语句提取的准确性和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值