Python 如何获得一个句子的热编码?
我有一个包含一个句子的列表,我想对每个单词中的完整句子进行一次热编码 比如说,Python 如何获得一个句子的热编码?,python,pandas,Python,Pandas,我有一个包含一个句子的列表,我想对每个单词中的完整句子进行一次热编码 比如说, sentences = [ "python, java", "linux, windows, ubuntu", "java, linux, ubuntu, windows", "performance, python, mac" ] 我想要这样的输出 java linux mac performance python ubuntu windows 0 1 0
sentences = [
"python, java",
"linux, windows, ubuntu",
"java, linux, ubuntu, windows",
"performance, python, mac"
]
我想要这样的输出
java linux mac performance python ubuntu windows
0 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1
2 1 1 0 0 0 1 1
3 0 0 1 1 1 0 0
我的尝试
我试着将我的句子转换成系列,然后执行get_dummies
,但我得到的是每个单词,而不是句子
print pd.get_dummies(pd.Series(sum([tag.split(', ') for tag in sentences],[])))
O/p
如何解决此问题?与列表理解一起使用拆分
:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform([x.split(', ') for x in sentences]),columns=mlb.classes_)
print (df)
java linux mac performance python ubuntu windows
0 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1
2 1 1 0 0 0 1 1
3 0 0 1 1 1 0 0
另一个解决方案包括:
性能不同:
sentences = sentences * 1000
In [166]: %%timeit
...: mlb = MultiLabelBinarizer()
...: df = pd.DataFrame(mlb.fit_transform([x.split(', ') for x in sentences]),columns=mlb.classes_)
...:
8.06 ms ± 179 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [167]: %%timeit
...: pd.Series(sentences).str.get_dummies(', ')
...:
105 ms ± 1.33 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
与列表理解一起用于拆分
:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform([x.split(', ') for x in sentences]),columns=mlb.classes_)
print (df)
java linux mac performance python ubuntu windows
0 1 0 0 0 1 0 0
1 0 1 0 0 0 1 1
2 1 1 0 0 0 1 1
3 0 0 1 1 1 0 0
另一个解决方案包括:
性能不同:
sentences = sentences * 1000
In [166]: %%timeit
...: mlb = MultiLabelBinarizer()
...: df = pd.DataFrame(mlb.fit_transform([x.split(', ') for x in sentences]),columns=mlb.classes_)
...:
8.06 ms ± 179 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [167]: %%timeit
...: pd.Series(sentences).str.get_dummies(', ')
...:
105 ms ± 1.33 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
你跑得多快啊!!!真是太神奇了,我花了5分钟来回答这个问题,但你只花了1分钟就回答了。真是难以置信@MohamedThasinah-你很快,我创造了10-20分钟的问题。这比回答更难…@MohamedThasinah,正是我的想法,答案不到一分钟就准备好了。。。太棒了。你跑得多快啊!!!真是太神奇了,我花了5分钟来回答这个问题,但你只花了1分钟就回答了。真是难以置信@MohamedThasinah-你很快,我创造了10-20分钟的问题。这比回答更难…@MohamedThasinah,正是我的想法,答案不到一分钟就准备好了。。。太神了