使用 NLTK 创建和利用带标签的语料库
Create and exploit a tagged corpora with NLTK
我正在尝试用马达加斯加语(我的母语)创建一个带标签的语料库。我按照文档 Python text Processing and natural language processing 和页面 https://www.nltk.org/book/ch05.html 中的说明进行操作。
我已经设法基于通用词性标签集和一些带标签的语料库创建了我自己的词性标签集。
这是我的代码:
import os, os.path
path = os.path.expanduser('D:/Mes documents/MY_POS_tagger/nltk_data')
if not os.path.exists(path):
os.mkdir(path)
print("OS path done :%s"%os.path.exists(path))
import nltk.data
nltk.data.path.append('D:/Mes documents/MY_POS_tagger/nltk_data')
print("NLTK data path done:%s"%(path in nltk.data.path))
#read a POSfile
import nltk
from nltk.corpus.reader import TaggedCorpusReader
from nltk.tag import UnigramTagger
#there's only one document malagasy.pos, it's there where my tagged corpora.
reader = TaggedCorpusReader('D:/Mes documents/MY_POS_tagger/nltk_data/corpora/cookbook', r'.*\.pos')
train_sents=reader.tagged_sents()
tagger=UnigramTagger(train_sents)
#dago.txt contain just sentences without tag, i just wanted to test if the tag i assign on the POS file will work
text=(nltk.data.load('corpora/cookbook/dago.txt', format='raw'))
text_tokenized=nltk.word_tokenize(text)
print tagger.tag(text_tokenized)
我有这个结果:
OS path done :True
NLTK data path done:True
[('Matory', u'VB'), ('ny', None), ('alika', u'NN')]
所以我可以看到它的工作,但我在上面的文档中读到我必须训练我的标记器。所以我问是否有人可以建议我如何做到这一点,因为我读到我需要 pickle 一个训练有素的标记器并训练和组合 Ngram 标记器,但我不明白 pickle 是什么意思或做什么。而且我不知道我现在所做的是否是使用 NLTK 创建和利用标记语料库的正确途径。
谢谢
i need to pickle a trained tagger and to train and combin Ngram taggers but i don't understand what pickle means or do
根据你问题的这一部分,Pickle 是 Python 中的一个库,它允许转储和加载二进制数据 on/from 你的硬盘,与 python 的任何对象相关你的选择。
信息在这里:https://docs.python.org/3/library/pickle.html
然而,建议您做的是采用预训练的标记器(可能属于另一种语言),并添加从您构建的马达加斯加标记语料库中提取的 ngram。但是,如果您有一个足够大的用您自己的语言标记的文档语料库,那么开发一个特定于马达加斯加语的标记器可能对您自己和 NLP 社区更有用。网上查了下没找到,自己准备一个就好了。
我正在尝试用马达加斯加语(我的母语)创建一个带标签的语料库。我按照文档 Python text Processing and natural language processing 和页面 https://www.nltk.org/book/ch05.html 中的说明进行操作。 我已经设法基于通用词性标签集和一些带标签的语料库创建了我自己的词性标签集。 这是我的代码:
import os, os.path
path = os.path.expanduser('D:/Mes documents/MY_POS_tagger/nltk_data')
if not os.path.exists(path):
os.mkdir(path)
print("OS path done :%s"%os.path.exists(path))
import nltk.data
nltk.data.path.append('D:/Mes documents/MY_POS_tagger/nltk_data')
print("NLTK data path done:%s"%(path in nltk.data.path))
#read a POSfile
import nltk
from nltk.corpus.reader import TaggedCorpusReader
from nltk.tag import UnigramTagger
#there's only one document malagasy.pos, it's there where my tagged corpora.
reader = TaggedCorpusReader('D:/Mes documents/MY_POS_tagger/nltk_data/corpora/cookbook', r'.*\.pos')
train_sents=reader.tagged_sents()
tagger=UnigramTagger(train_sents)
#dago.txt contain just sentences without tag, i just wanted to test if the tag i assign on the POS file will work
text=(nltk.data.load('corpora/cookbook/dago.txt', format='raw'))
text_tokenized=nltk.word_tokenize(text)
print tagger.tag(text_tokenized)
我有这个结果:
OS path done :True
NLTK data path done:True
[('Matory', u'VB'), ('ny', None), ('alika', u'NN')]
所以我可以看到它的工作,但我在上面的文档中读到我必须训练我的标记器。所以我问是否有人可以建议我如何做到这一点,因为我读到我需要 pickle 一个训练有素的标记器并训练和组合 Ngram 标记器,但我不明白 pickle 是什么意思或做什么。而且我不知道我现在所做的是否是使用 NLTK 创建和利用标记语料库的正确途径。 谢谢
i need to pickle a trained tagger and to train and combin Ngram taggers but i don't understand what pickle means or do
根据你问题的这一部分,Pickle 是 Python 中的一个库,它允许转储和加载二进制数据 on/from 你的硬盘,与 python 的任何对象相关你的选择。
信息在这里:https://docs.python.org/3/library/pickle.html
然而,建议您做的是采用预训练的标记器(可能属于另一种语言),并添加从您构建的马达加斯加标记语料库中提取的 ngram。但是,如果您有一个足够大的用您自己的语言标记的文档语料库,那么开发一个特定于马达加斯加语的标记器可能对您自己和 NLP 社区更有用。网上查了下没找到,自己准备一个就好了。