Nlp:tokenize:TypeError:预期的字符串或类似字节的对象

2022-04-15 00:00:00 python python-3.x nlp chatbot tokenize

问题描述

在标记化之前,我还尝试了.Apply(Str)和.astype(Str),但得到了TypeError:预期的字符串或类似字节的对象。


data.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 3 columns):
 #   Column           Non-Null Count  Dtype 
---  ------           --------------  ----- 
 0   tag              8 non-null      object
 1   clean_patterns   8 non-null      object
 2   clean_responses  8 non-null      object
dtypes: object(3)
memory usage: 320.0+ bytes

我正在尝试对NLP聊天机器人的数据进行WORD_标记化。


print(word_tokenize(data))
TypeError回溯(最近调用 最后)在 ->;1 print(word_tokenize(Data))

D:Anacondalibsite-Packages Ltk okenize_init_.py中 Word_tokenize(文本,语言,保留行) 128:键入PERVERE_LINE:布尔 129&q; -->;130语句=[文本]IF PERVERE_LINE ELSE SEND_TOKENIZE(文本,语言) 131报税表[ 132用于发送的令牌在_treebank_word_tokenizer.tokenizer.tokenize(已发送)中用于令牌的句子

D:Anacondalibsite-Packages Ltk okenize_init_.py中 SEND_TOKENIZE(文本,语言) 106&&q;&q; 107tokenizer=load(";tokenizers/punkt/{0}.pickle";.format(language)) -->;108返回tokenizer.tokenize(文本) 一百零九 110

D:Anacondalibsite-Packages Ltk okenizepunkt.py in tokenize(self, 文本,重新对齐边界)1272给定文本,返回一个列表 那篇课文中的句子。1273&; ->;1274返回列表(self.语句_from_text(文本,重新对齐边界))1275 1276 def DEBUG_Decisions(self, 文本):

D:Anacondalibsite-Packages Ltk okenizepunkt.py in 来自文本的句子(自、文本、重新对齐边界)1326
跟在那个时期之后。1327&&q; ->;1328返回[针对self.span_tokenize(Text,Realign_BORKORIES)中的s,e的文本[s:e]]1329 1330 def_Slices_from_Text(self, 文本):

D:Anacondalibsite-Packages (%0)中的ltk okenizepunkt.py 1326紧跟在这一时期之后。1327&&q; ->;1328返回[针对self.span_tokenize(Text,Realign_BORKORIES)中的s,e的文本[s:e]]1329 1330 def_Slices_from_Text(self, 文本):

D:Anacondalibsite-Packages Ltk okenizepunkt.py in SPAN_TOKENIZE(自身、文本、重新对齐边界)1316如果 重新对齐边界:1317个切片= 自._重新对齐_边界(文本、切片) ->;1318切片中sl:1319收益率(sl.start,sl.top)1320

D:Anacondalibsite-Packages Ltk okenizepunkt.py in 重新对齐边界(自身、文本、切片)1357;重新对齐=0 ->;1359用于SL1,SL2 in_Pair_ITER(切片):1360 SL1=切片(sl1.start+realign,sl1.top)1361,否则 SL2:

D:Anacondalibsite-Packages Ltk okenizepunkt.py in_Pair_ITER(It) 314 it=ITER(It) 315尝试: -->;316上一页=下一页(It) 317除停止迭代外: 318退货

D:Anacondalibsite-Packages Ltk okenizepunkt.py in _Slices_From_Text(自身,文本)1330 def_Slices_From_Text(自身,文本):1331 last_Break=0 ->;1332用于self._lang_vars.period_context_re().finditer(text):1333中的匹配
上下文=match.group()+match.group(";After_Tok&Quot;)1334
If self.Text_CONTAINS_SENTBreak(上下文):

TypeError:应为类似字符串或字节的对象


解决方案

欢迎使用SO;) 给定以下数据帧data和函数word_tokenize,您必须

import pandas as pd
def word_tokenize(sentence):
  return sentence.split()
data = pd.DataFrame(data={'col1': ['bar bar bar foo', 
                                 'foo foo foo bar', 124],
                        'col2': [12, 13, 14]})

以最简单的方式对col1应用函数

df['col1'].astype(str).apply(word_tokenize)
#ouput
0    [bar, bar, bar, foo]
1    [foo, foo, foo, bar]
2                   [124]
Name: col1, dtype: objec
首先将类型更改为str,然后对每个元素应用该函数。输出将为pandas.core.series.Series

相关文章