Tokenize - 字符串到标记数组

时间:2017-05-26 13:18:18

标签: python arrays python-3.x pandas numpy

我的代码:

import numpy as np
import pandas
import codecs
import re

dataframe = pandas.read_csv("tmp.csv", delimiter=",")
dataset = dataframe.values
x = dataset[:,0:1]
y = dataset[:,1]

#j = 0
for data in x:
    text = str(data[0])
    tokenizer = re.compile('\W+')
    tokens = tokenizer.split(text)
    i = 0
    for token in tokens:
        tokens[i] = token.lower()
        i += 1
    data = tokens
    #x[j] = tokens
    #j += 1
    print(data)

print(x)

print(data)的格式为['token1', 'token2', ...] print(x)的格式为[["text1"], ["text2"], ...]

我希望x {/ p>形式为[['token1', 'token2', ...], ['token5', 'token6', ...], ...] 带有计数索引j的

x[j] = tokens而非data = tokens返回ValueError: cannot copy sequence with size 4 to array axis with dimension 1

tmp.csv具有以下形式:image,行数约为3,5万行。

我对python很新,所以我希望有人能帮助我。

1 个答案:

答案 0 :(得分:0)

您的代码不会以任何方式修改x,因此当您print(x)时,您会获得与开头相同的列表。

您需要创建一个新列表,您将在其中存储标记化文本(即列表列表)。在第一个for循环之前添加x_tokens = [],然后使用x_tokens.append(tokens)附加每个令牌列表。

import numpy as np
import pandas
import codecs
import re

dataframe = pandas.read_csv("tmp.csv", delimiter=",")
dataset = dataframe.values
x = dataset[:,0:1]
y = dataset[:,1]

x_tokens = []

for data in x:
    text = str(data[0])
    tokenizer = re.compile('\W+')
    tokens = tokenizer.split(text)
    i = 0
    for token in tokens:
        tokens[i] = token.lower()
        i += 1

    x_tokens.append(tokens)

    print(tokens)

print(x_tokens)