📌  相关文章
📜  自然语言处理 |使用 RegEx 进行分块和分块

📅  最后修改于: 2022-05-13 01:55:15.416000             🧑  作者: Mango

自然语言处理 |使用 RegEx 进行分块和分块

块提取或部分解析是从句子中有意义地提取短语(用词性标记)的过程。
块由词组成,词的种类是使用词性标签定义的。人们甚至可以定义一种模式或不能成为chuck 一部分的单词,这些单词被称为chinks 。 ChunkRule 类指定要在块中包含和排除的单词或模式。

定义块模式:
Chuck 模式是普通的正则表达式,经过修改和设计以匹配旨在匹配词性标签序列的词性标签。尖括号用于指定单个标签,例如 -匹配名词标签。可以以相同的方式定义多个标签。

代码 #1:将块转换为 RegEx 模式。

Python3
# Laading Library
from nltk.chunk.regexp import tag_pattern2re_pattern
 
# Chunk Pattern to RegEx Pattern
print("Chunk Pattern : ", tag_pattern2re_pattern('
?+'))


Python3
from nltk.chunk import RegexpParser
 
# Introducing the Pattern
chunker = RegexpParser(r'''
NP:
{
<.*>*} }{ ''')   chunker.parse([('the', 'DT'), ('book', 'NN'), (     'has', 'VBZ'), ('many', 'JJ'), ('chapters', 'NNS')])


输出 :

Chunk Pattern :  ()?(<(NN[^\{\}]*)>)+

花括号用于指定像 {} 这样的块并指定缝隙模式,只需翻转大括号 }{。对于特定的短语类型,这些规则(块和缝隙模式)可以组合成语法。

代码 #2:使用 RegExParser 解析句子。

Python3

from nltk.chunk import RegexpParser
 
# Introducing the Pattern
chunker = RegexpParser(r'''
NP:
{
<.*>*} }{ ''')   chunker.parse([('the', 'DT'), ('book', 'NN'), (     'has', 'VBZ'), ('many', 'JJ'), ('chapters', 'NNS')])

输出 :

Tree('S', [Tree('NP', [('the', 'DT'), ('book', 'NN')]), ('has', 'VBZ'), 
Tree('NP', [('many', 'JJ'), ('chapters', 'NNS')])])