定义 regular expression,利用 NLTK’s Regular Expression Tokenizer,提取Einglish.txt标点符号,货币金额,日期,英文名字,组织名称
时间: 2024-05-12 07:13:51 浏览: 94
正则表达式(regular expression)是一种用于匹配文本的模式。可以利用正则表达式来提取文本中的特定信息。NLTK的正则表达式分词器(Regular Expression Tokenizer)是一个用于根据正则表达式模式将文本分成标记(tokens)的工具。
以下是使用NLTK的正则表达式分词器提取文本中的标点符号、货币金额、日期、英文名字和组织名称的代码:
```python
import nltk
# 加载 English.txt 文件
with open('English.txt', 'r') as f:
text = f.read()
# 定义正则表达式模式
patterns = [
r'\p{P}', # 标点符号
r'\$?\d+(\.\d{2})?', # 货币金额
r'\d{1,2}(st|nd|rd|th)? [A-Za-z]{3,10} \d{4}', # 日期
r'[A-Z][a-z]+ [A-Z][a-z]+', # 英文名字
r'[A-Z][a-z]+ (University|College|Institute|Foundation|Association|Company|Corporation)' # 组织名称
]
# 将正则表达式模式转换为 NLTK 的正则表达式对象
patterns = '|'.join('(?:{})'.format(p) for p in patterns)
tokenizer = nltk.tokenize.RegexpTokenizer(patterns)
# 使用正则表达式分词器提取文本中的标点符号、货币金额、日期、英文名字和组织名称
tokens = tokenizer.tokenize(text)
# 打印提取的结果
print(tokens)
```
这段代码将文本文件 "English.txt" 中的内容读取出来,并定义了一个正则表达式模式列表。接着,将这些模式转换为 NLTK 的正则表达式对象,然后使用这个对象对文本进行分词。最后,将分词结果打印出来。
注意,这个正则表达式模式只是一个简单的示例。如果需要更精确地提取特定类型的信息,可能需要根据具体的需求调整正则表达式模式。
阅读全文