Как распечатать определенный токенизированный объект - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблема с моим кодом.У меня есть .txt файл с именем test.txt, который содержит предложения, и у меня есть датафрейм, который содержит все токенизированные слова в этих предложениях.Моя проблема в том, что я хочу специально найти и распечатать конкретный токен и сохранить его номер позиции.Я попробовал некоторые операторы if (), но кажется, что он перезаписывает счет индекса каждого слова.

def output ():
        currCount = 0
            for words in read():
                add = len(words)
                word_new = [' '.join(df.loc[t].values.tolist()) if t 
                in df.index is not None else t for t in word_tokenize(words)]
                tag = ' '.join(word for word in word_new);
                print('First:' + str(currCount) + '\n' + 'Last:' + str(currCount + add)
                + '\n' + 'Tag: ' + tag + '\n' + 'word: '+words + '\n')
                currCount += add + 1
                if words is ".":
                    currCount = 0

#Sample output                                       #Output that i want
#First:0                                             #Assume that i only want 
#Last:1                                              #PERSON tags
#Tag: PERSON                                         
#word: I                                             #First:0 
                                                     #Last:1
#First:2                                             #Tag: PERSON
#Last:6                                              #word: I
#Tag: NOTHING
#word: like                                          #First: 0  
                                                     #Last: 3
#First:7                                             #Tag: Bob
#Last:12                                             #word: PERSON
#Tag: FOOD
#word: pizza

#First:13
#Last:14
#Tag: NOTHING
#word: .

#First:0
#Last:3
#Tag: Bob
#word: PERSON

#First:4
#Last:9
#Tag: NOTHING
#word: likes

#First:10
#Last:15
#Tag: FOOD
#word: pizza

#First:16
#Last:17
#Tag: NOTHING
#word: .

Пример предложения внутри моего файла test.txt:

   I like pizza .
   Bob likes pizza .

иобразец тега, который я сделал

  I      PERSON 
  Like   NOTHING
  Pizza  FOOD
  .      NOTHING
  Bob    PERSON
  likes  NOTHING
  pizza  FOOD
  .      NOTHING
The output that i want: 
Assume that i only want PERSON tags.

First:0 
Last:1
Tag: PERSON
word: I

First: 0  
Last: 3
Tag: Bob
word: PERSON


1 Ответ

0 голосов
/ 11 февраля 2019

Это может быть более простой и понятный способ сделать это:

words = []
for line in data:
    start = 0
    for word in nltk.word_tokenize(line):
        word_tag = {}
        word_tag['First'] = start
        end = start + len(word)
        word_tag['Last'] = end
        word_tag['Word'] = word
        # word_tag['Tag'] = <your statement for tagging>
        words.append(word_tag)
        start = end + 1

df = pd.DataFrame(words)

Вот так будет выглядеть ваш фрейм данных:

First   Last    Word    Tag
0       1       I       PERSON
2       6       like    NOTHING
7       12      pizza   FOOD
13      14      .       NOTHING
0       3       Bob     PERSON
4       9       likes   NOTHING
10      15      pizza   FOOD
16      17      .       NOTHING

Затем вы можете отфильтровать строки, используя:

df[df['Tag'] == 'PERSON']

Вывод:

First   Last    Word    Tag
0       1       I       PERSON
0       3       Bob     PERSON
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...