自然语言处理 |使用标记语料库阅读器进行自定义
我们如何使用 Tagged Corpus Reader ?
- 自定义词分词器
- 自定义句子标记器
- 自定义段落块阅读器
- 自定义标签分隔符
- 将标签转换为通用标签集
代码 #1:自定义词分词器
Python3
# Loading the libraries
from nltk.tokenize import SpaceTokenizer
from nltk.corpus.reader import TaggedCorpusReader
x = TaggedCorpusReader('.', r'.*\.pos',
word_tokenizer = SpaceTokenizer())
x.words()
Python3
# Loading the libraries
from nltk.tokenize import LineTokenizer
from nltk.corpus.reader import TaggedCorpusReader
x = TaggedCorpusReader('.', r'.*\.pos',
sent_tokenizer = LineTokenizer())
x.sents()
Python3
from nltk.corpus.reader import TaggedCorpusReader
x = TaggedCorpusReader('.', r'.*\.pos', tagset ='en-brown')
x.tagged_words(tagset ='universal')
Python3
from nltk.corpus.reader import TaggedCorpusReader
from nltk.corpus import treebank
treebank.tagged_words()
treebank.tagged_words(tagset ='universal')
treebank.tagged_words(tagset ='brown')
输出 :
['The', 'expense', 'and', 'time', 'involved', 'are', ...]
代码#2:对于句子
Python3
# Loading the libraries
from nltk.tokenize import LineTokenizer
from nltk.corpus.reader import TaggedCorpusReader
x = TaggedCorpusReader('.', r'.*\.pos',
sent_tokenizer = LineTokenizer())
x.sents()
输出 :
[['The', 'expense', 'and', 'time', 'involved', 'are', 'astronomical', '.']]
自定义段落
- 假设段落被空行分割
- 使用 para_block_reader函数完成,即nltk.corpus.reader.util.read_blankline_block
- nltk.corpus.reader.util中存在许多其他块读取器,其目的是从流中读取文本块。
自定义标签分隔符
- 如果 '/' 不用作单词/标签分隔符,则可以将替代字符串传递给 TaggedCorpusReader 用于 sep。
- 默认为 sep='/' ,但如果想用 '|' 分割单词和标签,例如 'word|tag',则 sep='|'被传入。
将标签转换为通用标签集
标签集:它是一个或多个语料库使用的 POS 标签列表。
通用标签集:它是一个简化和浓缩的标签集,仅由 12 个词性标签组成
代码#3:将语料库标签映射到通用标签集
Python3
from nltk.corpus.reader import TaggedCorpusReader
x = TaggedCorpusReader('.', r'.*\.pos', tagset ='en-brown')
x.tagged_words(tagset ='universal')
输出 :
[('The', 'DET'), ('expense', 'NOUN'), ('and', 'CONJ'), ...]
代码#4:将语料库标签映射到通用标签集
Python3
from nltk.corpus.reader import TaggedCorpusReader
from nltk.corpus import treebank
treebank.tagged_words()
treebank.tagged_words(tagset ='universal')
treebank.tagged_words(tagset ='brown')
输出 :
[('Pierre', 'NNP'), ('Vinken', 'NNP'), (', ', ', '), ...]
[('Pierre', 'NOUN'), ('Vinken', 'NOUN'), (', ', '.'), …]
[('Pierre', 'UNK'), ('Vinken', 'UNK'), (', ', 'UNK'), ...]