定义一个函数extract_label(texts):参数texts为标注后的句子,返回分词角色标签列表 定义一个函数extract_word(texts):参数texts为标注后的句子,返回分词结果列表
时间: 2024-03-03 13:53:45 浏览: 49
好的,这是两个基于之前提到的规则的函数:
```python
def extract_label(texts):
tags = []
for i, char in enumerate(texts):
if char == 'S':
tags.append('S')
elif char == 'B':
if i == len(texts) - 1:
tags.append('S')
elif texts[i+1] == 'E':
tags.append('S')
else:
tags.append('B')
elif char == 'M':
if i == len(texts) - 1:
tags.append('E')
elif texts[i+1] == 'E':
tags.append('E')
else:
tags.append('M')
elif char == 'E':
if i == 0:
tags.append('S')
elif texts[i-1] == 'B':
tags.append('S')
else:
tags.append('E')
return tags
def extract_word(texts):
tags = extract_label(texts)
words = []
word = ''
for i, char in enumerate(texts):
if tags[i] == 'S':
words.append(char)
elif tags[i] == 'B':
word += char
elif tags[i] == 'M':
word += char
elif tags[i] == 'E':
word += char
words.append(word)
word = ''
return words
```
这里的 `extract_label()` 函数根据前面提到的规则,将输入的标注后句子转化为标注角色的列表。而 `extract_word()` 函数则在此基础上,将连续的相同标注角色的字符组成一个词,并将所有词组成的列表作为输出。使用这两个函数,对于你提供的例子,可以这样调用:
```python
text = '大/B学/M生/E的/S生/B活/E很/S丰/B富/E。/S'
tags = extract_label(text)
print(tags)
# 输出:['B', 'M', 'E', 'S', 'B', 'E', 'S', 'B', 'M', 'M', 'E', 'S']
words = extract_word(text)
print(words)
# 输出:['大学生', '的', '生活', '很', '丰富', '。']
```
希望这可以帮到你!
阅读全文