Python 3.x 在Python中切片列表时的奇怪行为
我在pandas中有一些数据,我想用于命名实体识别。数据样本如下Python 3.x 在Python中切片列表时的奇怪行为,python-3.x,pandas,string,sklearn-pandas,Python 3.x,Pandas,String,Sklearn Pandas,我在pandas中有一些数据,我想用于命名实体识别。数据样本如下 text ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'] tags ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O'] 我对数据运行了
text
['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.']
tags
['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']
我对数据运行了sklearn.model\u selection import train\u test\u split
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
然而,当我试图打印列表时,它会给我一些奇怪的行为,特别是,它将文本和标记周围的方括号[]
和引号'
作为测试和标记的一部分。例如,当我写作的时候
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
output
['Angie',
['B-ORG',
我的问题是,为什么要将括号和引号字符作为字符串的一部分计算?如何修复它?试试:
text
Angie ’s is my favorite but the prices at little Tonys are better.
tags
B-ORG I-ORG O O O O O O O B-ORG I-ORG O O O
看起来您正试图将格式化为类似列表的字符串转换为列表。它不知道有什么更好的方法,所以括号和撇号就可以使用了。我使用了
数据框
进行声明,并执行了相同的任务,即拆分训练文本和测试文本
和训练标签和测试标签
。请参考下述解决方案。然后,我们将继续处理您的场景中的[]
和'
问题
# Import all the important libraries
import pandas as pd
from sklearn.model_selection import train_test_split
# Store all String data into the 'data' variable
data = {
'text' : ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'],
'tags' : ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']}
# Store above Initialized Data into DataFrame
dataset = pd.DataFrame(data)
注意:-在继续之前,始终打印数据集的几条记录。因为您的数据集中有时可能会出现问题,这会偏离您的预期结果
# Print a few records of 'dataset'
dataset
text tags
0 Angie B-ORG
1 ’s I-ORG
2 is O
3 my O
4 favorite O
5 but O
6 the O
7 prices O
8 at O
9 little B-ORG
10 Tonys I-ORG
11 are O
12 better O
13 . O
现在我们可以继续讨论分裂部分。我使用了你问题部分提到的相同方法
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(
dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
因此,在拆分后,我们可以打印train\u文本和train\u标记的切片列表
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
上述单元格的输出如下所述:-
favorite
O
如您所见,它没有在输出中打印任何[]
和'
你的问题:-
Q.)为什么要将括号和引号字符作为字符串的一部分计算?如何修复它?
我不知道这个问题背后有什么正当的原因。但是,如果您的数据没有正确声明,或者由于任何其他声明问题,有时可能会发生这种情况。但是在继续之前打印数据集是一个很好的实践。因为您可以通过此方法识别数据的行为
解决方案:-使用DataFrame
非常适合我。你可以用这个
希望此解决方案对您有所帮助。如果您仍然面临问题,请上传完整的代码。因此,我们可以找到相应的解决方案