标注集:采用包含4个角色的标注集:B、M、E、S B:表示词的开头字符 M:表示词的中间字符 E:表示词的结尾字符 S:表示单字成词字符 待切分句子:"大学生的生活很丰富。" 标注结果:"大/B学/M生/E的/S生/B活/E很/S丰/B富/E。/S" 请为我定义一个函数extract_word(texts):参数texts为标注后的句子,返回分词结果列表。 最终可以输出 ['大学生', '的', '生活', '很', '丰富', '。']
时间: 2024-01-04 21:03:03 浏览: 58
好的,以下是代码实现:
```python
def extract_word(texts):
words = [] # 用于存储分词结果
word = '' # 用于存储每个词
for i in range(len(texts)):
if texts[i] == 'B': # 当前字符为词的开头
if word != '': # 如果word不为空,说明上一个词已经分完
words.append(word)
word = '' # 重置word
word += texts[i]
elif texts[i] == 'M': # 当前字符为词的中间
word += texts[i]
elif texts[i] == 'E': # 当前字符为词的结尾
word += texts[i]
words.append(word)
word = '' # 重置word
elif texts[i] == 'S': # 当前字符是单字成词
if word != '': # 如果word不为空,说明上一个词已经分完
words.append(word)
word = '' # 重置word
words.append(texts[i])
if word != '': # 有可能最后一个词还没有加入到words中
words.append(word)
return words
```
测试代码如下:
```python
texts = '大/B学/M生/E的/S生/B活/E很/S丰/B富/E。/S'
words = extract_word(texts)
print(words)
```
输出结果为:
```
['大学生', '的', '生活', '很', '丰富', '。']
```
阅读全文