Маркировка слов из предложения, из которого они пришли - PullRequest
0 голосов
/ 20 марта 2019

У меня есть фрейм данных с 3 столбцами, а именно: 'word', 'pos-tag', 'label' .Слова изначально взяты из текстового файла. Теперь мне бы хотелось, чтобы в другом столбце «предложения #» указывался индекс предложений, из которых исходно слова.

Current state:-
WORD POS-Tag Label
my   PRP$     IR
name  NN      IR 
is   VBZ      IR
ron  VBN      PERSON
.     .
my   PRP$     IR
name NN       IR
is   VBZ      IR
harry VBN     Person
.      .      IR
Desired state:-
Sentence#  WORD    Pos-Tag  Label
 1          My       PRP      IR
 1          name     NN       IR
 1           is      VBZ      IR
 1           ron     VBN      Person
 1            .       .       IR
 2            My     PRP      IR
 2            name   NN       IR
 2             is    VBZ      IR
 2           harry   VBN      Person
 2              .     .       IR

код, который я использовал до сих пор: -

#necessary libraries
import pandas as pd
import numpy as np
import nltk 
import string
document=open(r'C:\Users\xyz\newfile.txt',encoding='utf8')
content=document.read()

sentences = nltk.sent_tokenize(content)
sentences = [nltk.word_tokenize(sent) for sent in sentences]
sentences = [nltk.pos_tag(sent) for sent in sentences]


flat_list=[]

# flattening a nested list
for x in sentences:
    for y in x:
        flat_list.append(y)

df = pd.DataFrame(flat_list, columns=['word','pos_tag']) 

#importing data to create the 'Label' column
data=pd.read_excel(r'C:\Users\xyz\pname.xlsx')
pname=list(set(data['Product']))

df['Label']=['drug' if x in fl else 'IR' for x in df['word']]

1 Ответ

0 голосов
/ 20 марта 2019

Просто разделите ваш контент на строки заранее, используя split () с соответствующими знаками препинания.Сохраните каждую строку в некотором списке, а затем для индекса, строку в enumerate (lines): делайте то, что вы обычно делаете, а также добавляйте index к вашему df.

...