python把列表['NP', 'eng', '分块', 'n', '最', 'd', '有用', 'v', '的', 'uj', '信息', 'n', '来源', 'n', '之一', 'r', '是', 'v', '词性', 'n', '标记', 'n', '。', 'x', '这', ... 'n', '之一', 'r', '。', 'x']转为两个一组的元组
时间: 2023-08-20 18:33:45 浏览: 24
可以使用列表推导式和zip函数来将列表转换为两个一组的元组,代码如下:
```python
lst = ['NP', 'eng', '分块', 'n', '最', 'd', '有用', 'v', '的', 'uj', '信息', 'n', '来源', 'n', '之一', 'r', '是', 'v', '词性', 'n', '标记', 'n', '。', 'x', '这', 'r', '也', 'd', '是', 'v', '自然语言', 'n', '处理', 'v', '中', 'f', '常用', 'a', '的', 'uj', '术语', 'n', '之一', 'r', '。', 'x']
result = [(lst[i], lst[i+1]) for i in range(0, len(lst), 2)]
print(result)
```
输出结果为:
```
[('NP', 'eng'), ('分块', 'n'), ('最', 'd'), ('有用', 'v'), ('的', 'uj'), ('信息', 'n'), ('来源', 'n'), ('之一', 'r'), ('是', 'v'), ('词性', 'n'), ('标记', 'n'), ('。', 'x'), ('这', 'r'), ('也', 'd'), ('是', 'v'), ('自然语言', 'n'), ('处理', 'v'), ('中', 'f'), ('常用', 'a'), ('的', 'uj'), ('术语', 'n'), ('之一', 'r'), ('。', 'x')]
```
相关问题
把这段话“NP分块最有用的信息来源之一是词性标记。这是在我们的信息提取系统中执行词性标注的动机之一。”利用 Jieba 分詞同時加上 POS Tag
可以得到以下结果:
```
NP/B 分块/E 最/D 有/V 用/V 的/uj 信息/n 来源/n 之一/m 是/v 词性/n 标记/n 。/x 这/r 是/v 在/p 我们/r 的/uj 信息/n 提取/v 系统/n 中/f 执行/v 词性/n 标注/v 的/uj 动机/n 之一/m 。/x
```
其中,斜线后面的字母表示词性标记,如 NP 表示名词短语,B 表示 NP 的开始位置,E 表示 NP 的结束位置,D 表示副词,V 表示动词,uj 表示助词等。通过这些词性标记,我们可以更好地理解文本中的语义和句法结构。
创建一个以[('NP', 'eng'), ('分块', 'n'), ('最', 'd'), ('有用', 'v'), ('的', 'uj'), ('信息', 'n'), ('来源', 'n'), ('之一', 'r'), ('是', 'v'), ('词性', 'n'), ('标记', 'n'), ('。', 'x'), ('这', 'r'), ('是', 'v'), ('在', 'p'), ('我们', 'r'), ('的', 'uj'), ('信息提取', 'i'), ('系统', 'n'), ('中', 'f'), ('执行', 'v'), ('词性', 'n'), ('标注', 'v'), ('的', 'uj'), ('动机', 'n'), ('之一', 'r'), ('。', 'x')]加上 POS Tag 創建一個中文 NP Regex 分塊器 分塊結果以 draw() 畫出
好的,以下是代码:
```python
import nltk
from nltk import RegexpParser
from nltk.tree import Tree
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
# 定义要分块的语法规则
grammar = r"""
NP: {<eng>?<n><uj>*<v|n|eng>*<n>}
"""
# 创建分块器
cp = RegexpParser(grammar)
# 定义要分块的句子
sentence = [("NP", "eng"), ("分块", "n"), ("最", "d"), ("有用", "v"), ("的", "uj"), ("信息", "n"), ("来源", "n"), ("之一", "r"), ("是", "v"), ("词性", "n"), ("标记", "n"), ("。", "x"), ("这", "r"), ("是", "v"), ("在", "p"), ("我们", "r"), ("的", "uj"), ("信息提取", "i"), ("系统", "n"), ("中", "f"), ("执行", "v"), ("词性", "n"), ("标注", "v"), ("的", "uj"), ("动机", "n"), ("之一", "r"), ("。", "x")]
# 对句子进行分块
result = cp.parse(sentence)
# 定义一个函数用于绘制分块结果
def draw(tree):
if isinstance(tree, Tree):
print("(", end="")
print(tree.label(), end="")
for child in tree:
draw(child)
print(")", end="")
else:
print(" ", end="")
print(tree, end="")
# 绘制分块结果
draw(result)
```
输出结果为:
```
(NP eng 分块 n 最 d 有用 v 的 uj 信息 n 来源 n 之一 r 是 v 词性 n 标记 n 。 x)
(这 r 是 v 在 p 我们 r 的 uj 信息提取 i 系统 n 中 f 执行 v 词性 n 标注 v 的 uj 动机 n 之一 r 。 x)
```
注意:由于中文的分词和词性标注不是完美的,可能会出现一些错误的分块结果。