-2

我尝试使用 Flair https://github.com/flairNLP/flair对印度尼西亚语中的句子列表进行 POS 标记

结果是一个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)

我的代码有什么问题?

4

1 回答 1

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)
于 2020-08-28T07:39:33.240 回答