栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在字符串而不是列表中输出NLTK pos_tag?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在字符串而不是列表中输出NLTK pos_tag?

简而言之:

' '.join([word + '/' + pos for word, pos in tagged_sent]

总而言之:

我认为您对使用字符串函数来连接字符串的想法过高,这实际上并不那么昂贵。

import timefrom nltk.corpus import browntagged_corpus = brown.tagged_sents()start = time.time()with open('output.txt', 'w') as fout:    for i, sent in enumerate(tagged_corpus):        print(' '.join([word + '/' + pos for word, pos in sent]), end='n', file=fout)end = time.time() - startprint (i, end)

在我的笔记本电脑上,棕色语料库的所有57339个句子花了2.955秒。

[出]:

$ head -n1 output.txt The/AT Fulton/NP-TL County/NN-TL Grand/JJ-TL Jury/NN-TL said/VBD Friday/NR an/AT investigation/NN of/IN Atlanta's/NP$ recent/JJ primary/NN election/NN produced/VBD ``/`` no/AT evidence/NN ''/'' that/CS any/DTI irregularities/NNS took/VBD place/NN ./.

但是使用字符串将单词和POS连接起来会在以后需要读取标记的输出时引起麻烦,例如

>>> from nltk import pos_tag>>> tagged_sent = pos_tag('cat / dog'.split())>>> tagged_sent_str = ' '.join([word + '/' + pos for word, pos in tagged_sent])>>> tagged_sent_str'cat/NN //CD dog/NN'>>> [tuple(wordpos.split('/')) for wordpos in tagged_sent_str.split()][('cat', 'NN'), ('', '', 'CD'), ('dog', 'NN')]

如果要保存标记的输出然后再阅读,最好使用

pickle
保存tagd_output的方法,例如

>>> import pickle>>> tagged_sent = pos_tag('cat / dog'.split())>>> with open('tagged_sent.pkl', 'wb') as fout:...     pickle.dump(tagged_sent, fout)... >>> tagged_sent = None>>> tagged_sent>>> with open('tagged_sent.pkl', 'rb') as fin:...     tagged_sent = pickle.load(fin)... >>> tagged_sent[('cat', 'NN'), ('/', 'CD'), ('dog', 'NN')]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号