📌  相关文章
📜  自然语言处理 |使用标记语料库阅读器进行自定义

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

自然语言处理 |使用标记语料库阅读器进行自定义

我们如何使用 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'), ...]