python - 带有外来符号的 Countvectorizer 在词汇词典中提供交换的键值
问题描述
我正在使用CountVectorizer
:
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
series = pd.Series(["abc", "aaa"])
CountVectorizer(analyzer='char').fit(series).vocabulary_
这会产生一个词汇表,其中字母作为键,词汇表中的索引作为值:
{'a': 0, 'b': 1, 'c': 2}
现在让我们添加一些外国(阿拉伯?)字符:
series = pd.Series(["d'ا'ر'م'ی'ن'abc", "aaa"])
CountVectorizer(analyzer='char').fit(series).vocabulary_
{'d': 4,
"'": 0,
'ا': 5,
'ر': 6,
'م': 7,
'ی': 9,
'ن': 8,
'a': 1,
'b': 2,
'c': 3}
看看键和值是如何交换外来字符的,所以字符和索引是交换的。发生了什么?看起来是因为在某些语言中人们从右到左阅读?这是 Python 字典行为的一部分吗?
解决方案
键和值实际上没有交换。打印字典时,这只是一个视觉“错误”。
当您定义这样的字典时:
dict = {'d': 4,
"'": 0,
'ا': 5,
'ر': 6,
'م': 7,
'ی': 9,
'ن': 8,
'a': 1,
'b': 2,
'c': 3}
您仍然可以使用相应的键访问其中一个元素的值:
dict['م']
这给了你预期的结果:
7
推荐阅读
- javascript - 使用 htmlunit 抓取 javascript - “您当前浏览时关闭了 JavaScript”
- ubuntu - 是否可以使用批处理脚本在 WSL2 中启动 xfce4?
- git - ModuleNotFoundError:Heroku 上没有名为“app”的模块
- javascript - 谁能帮我解决这个反应错误?
- python - Python Tornado KeyError 从客户端集中删除客户端时
- awk - 垂直对齐尾部反斜杠
- javascript - 如何更新 Firebase Firestore DB 中的嵌套对象
- java - 如何使用 while 循环输出具有必要间距和缩进的“*”?
- php - 小数点后向上取整到最大值
- docker - Docker:TypeError:-=:'Retry'和'int'不支持的操作数类型