【问题标题】:How to tokenize a list of lists in python如何在python中标记列表列表
【发布时间】:2019-04-16 16:54:03
【问题描述】:

在网上搜索后,我从 Gutenberg.com 获得了文本格式的儿童读物。 现在我想分析一下单词。但是我没有进行标记化,因为内容原来是列表列表。

内容如下:

raw[0]

[“爱丽丝梦游仙境”, '刘易斯卡罗尔', '千年支点版 3.0', '第一章. 落入兔子洞', “爱丽丝开始厌倦坐在她姐姐身边”, “银行,无事可做:她曾经偷窥过一两次”, “她姐姐正在读的书,但里面没有图片或对话”, '它,'一本书有什么用,'爱丽丝想,'没有图片或', “对话?”, “所以她在自己的脑海中考虑(尽她所能,为了”, '炎热的一天让她感到非常困倦和愚蠢),无论是快乐', '制作菊花链值得费力起床', '采摘雏菊,突然一只粉红色眼睛的白兔跑了', '在她身边', “你的敲门声可能有些道理,”步兵继续说, ...]

import nltk
import pickle
    with open('tokens.data', 'rb') as filehandle:  
    # read the data as binary data stream
    raw = pickle.load(filehandle)
raw[0]

len(raw)    ->   407   Which means we got 407 children's book. 
type(raw)   ->   List   Each list stands for one book. 

from nltk.tokenize import sent_tokenize, word_tokenize
tokenized_sents = [word_tokenize(i) for i in raw[0]]
for i in tokenized_sents:
      print (i)


['ALICE', '’', 'S', 'ADVENTURES', 'IN', 'WONDERLAND']
['Lewis', 'Carroll']
['THE', 'MILLENNIUM', 'FULCRUM', 'EDITION', '3.0']
......
['remembering', 'her', 'own', 'child-life', ',', 'and', 'the', 'happy', 
'summer', 'days', '.']
['THE', 'END']

问题是我只能像 raw[0], raw[1], ...... 那么如何在其中应用 lambda 呢?

【问题讨论】:

  • 你在tokens.data 里放了什么?没有这些信息,只有读心者才能帮助您。
  • 从古腾堡网站你应该得到纯文本,而不是泡菜。我建议你去nltk.org/book` 开始阅读。 nltk 还提供了许多古腾堡书籍作为即用型语料库,因此您可以轻松开始。
  • 如果你想将你的列表扁平化为一个列表,你可能希望看到stackoverflow.com/questions/952914/…
  • 在tokens.data里面有407本列表格式的童书。所以这就是我们必须使用pickle的原因。

标签: python nltk tokenize


【解决方案1】:

如果你想标记整个内容,那么你可以尝试这样的事情:

content = ' '.join(map(lambda l: ' '.join(l), raw))
tokens = word_tokenize(content)

首先将所有列表合并为一个文本,然后将其标记化。

【讨论】:

  • 刚刚编辑过。你能给一些提示吗?既然现在只能做raw[0],raw[1],那如何应用lambda呢?
  • 当然,map 通过lambdajoin 应用于每个'raw[0], raw[1], etc 并返回字符串列表。然后我们最终将这些字符串合二为一。
猜你喜欢
  • 2021-04-01
  • 2016-06-01
  • 1970-01-01
  • 2019-10-31
  • 2018-07-06
  • 1970-01-01
  • 2018-07-18
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多