ValueError: форма переданных значений - это бла, индексы - бла
Я пытаюсь сделать POS-теги к списку предложений на бахаса, Индонезия, с помощью Flair https://github.com/flairNLP/flair
В результате list
, имя pos
:
['Sejarah <NOUN> perkembangan <NOUN> ilmu <NOUN> ekonomi <NOUN> Adam <PROPN> Smith <PROPN> sering <ADV> disebut <VERB> sebagai <ADP> yang <PRON> pertama <NUM> mengembangkan <VERB> ilmu <NOUN> ekonomi <NOUN> pada <ADP> abad <NOUN> 18 <NUM> sebagai <ADP> satu <DET> cabang <NOUN> tersiri <NOUN> dalam <ADP> ilmu <NOUN> pengetahuan <NOUN>', 'Melalui <ADP> karya <NOUN> besarnya <NOUN> General <PROPN> Theory <PROPN> Employment <PROPN> Interest <PROPN> and <PROPN> Money <PROPN> yang <PRON> menyatakan <VERB> bahwa <SCONJ> pasar <NOUN> tidak <PART> selalu <ADV> mampu <ADV> menciptakan <VERB> keseimbangan <NOUN> dan <CCONJ> karena <SCONJ> itu <DET> intervensi <NOUN> pemerintah <NOUN> harus <ADV> dilakukan <VERB> agar <SCONJ> distribusi <NOUN> ber <VERB> daya <NOUN> mencapai <VERB> sasarannya <NOUN>']
Я хочу преобразовать этот список в фрейм данных, например:
Text Label
0 Sejarah NOUN
1 perkembangan NOUN
2 ilmu NOUN
3 ekonomi NOUN
4 Adam PROPN
5 Smith PROPN
6 sering ADV
7 disebut VERB
8 sebagai ADP
9 yang PRON
10 pertama NUM
... ... ...
... ... ...
Я пытался:
df = pd.DataFrame(pos, columns=['Text', 'Label'])
Но у меня такая ошибка:
ValueError: Shape of passed values is (6921, 1), indices imply (6921, 2)
Что не так с моим кодом?
1 ответ
Ты можешь сделать:
# convert string to list
d = d[0].split()
# create dataframe
df = pd.DataFrame(zip(d[::2], d[1::2]), columns=['Text', 'Label'])
# modify label col
df['Label'] = df['Label'].str.replace('\W','').str.strip()
print(df)
Text Label
0 Sejarah NOUN
1 perkembangan NOUN
2 ilmu NOUN
3 ekonomi NOUN
4 Adam PROPN
5 Smith PROPN
6 sering ADV
7 disebut VERB
8 sebagai ADP
9 yang PRON
10 pertama NUM
11 mengembangkan VERB
12 ilmu NOUN
13 ekonomi NOUN
14 pada ADP
15 abad NOUN
16 18 NUM
17 sebagai ADP
18 satu DET
19 cabang NOUN
20 tersiri NOUN
21 dalam ADP
22 ilmu NOUN
23 pengetahuan NOUN
Для списка строк вы можете:
# d is list of strings
d = [x.split() for x in d]
df = pd.concat([pd.DataFrame(zip(x[::2], x[1::2]), columns=['Text', 'Label']) for x in d], ignore_index=True)