你好,请你使用python ltc库,将一段txt文本中的公司名、人名、电话、职位、公司地址、公司网址这些信息提取出来
时间: 2024-01-31 16:03:03 浏览: 101
提取txt文件中的部分数据
4星 · 用户满意度95%
好的,这里给出一个简单的示例代码,使用了ltc库和jieba库:
```python
import jieba
from ltp import LTP
# 加载LTP模型
ltp = LTP()
# 加载停用词表
stop_words = set()
with open('stop_words.txt', 'r', encoding='utf-8') as f:
for line in f:
stop_words.add(line.strip())
def extract_info(text):
# 分句
sentences = [s.strip() for s in text.split('。') if s.strip()]
# 分词、词性标注、命名实体识别
words, postags, nertags = [], [], []
for s in sentences:
seg, pos, ner = ltp.seg([s]), ltp.pos([s]), ltp.ner([s])
words.extend(seg[0])
postags.extend(pos[0])
nertags.extend(ner[0])
# 提取信息
company_names, person_names, phones, positions, addresses, urls = set(), set(), set(), set(), set(), set()
for i in range(len(words)):
if postags[i] == 'nt' and words[i] not in stop_words:
if nertags[i] == 'ORG':
company_names.add(words[i])
elif nertags[i] == 'PER':
person_names.add(words[i])
elif postags[i] == 'm':
if len(words[i]) == 11 and words[i].isdigit():
phones.add(words[i])
elif postags[i] == 'n':
if words[i] == '职位':
positions.add(words[i+1])
elif words[i] == '地址':
addresses.add(words[i+1])
elif words[i] == '网址':
urls.add(words[i+1])
return company_names, person_names, phones, positions, addresses, urls
# 测试
text = '张三是某公司的副总裁,电话是13312345678,职位是销售经理,公司地址是北京市朝阳区,公司网址是www.example.com。'
company_names, person_names, phones, positions, addresses, urls = extract_info(text)
print('公司名:', company_names)
print('人名:', person_names)
print('电话:', phones)
print('职位:', positions)
print('地址:', addresses)
print('网址:', urls)
```
需要注意的是,这个示例代码仅能提取一些简单的信息,如果需要提取更复杂的信息,可能需要更复杂的方法和模型。同时,需要自己准备好停用词表和LTP模型的相关文件。
阅读全文