Удаление стоп-слов и токенизации в python - PullRequest
2 голосов
/ 18 марта 2019

У меня есть следующие входные данные, и я хотел бы удалить стоп-слова из этого ввода и хочу выполнить токенизацию:

input = [['Hi i am going to college', 'We will meet next time possible'],
         ['My college name is jntu', 'I am into machine learning specialization'],
         ['Machine learnin is my favorite subject' ,'Here i am using python for 
              implementation']]

Я пробовал следующий код, но не получил желаемых результатов:

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize 
import nltk
nltk.download('stopwords')

stop_words = set(stopwords.words('english')) 

word_tokens = word_tokenize(input) 

filtered_sentence = [w for w in word_tokens if not w in stop_words] 

filtered_sentence = [] 

for w in word_tokens: 
    if w not in stop_words: 
        filtered_sentence.append(w) 

#print(word_tokens) 
print(filtered_sentence) 

Ожидается вывод, как показано ниже:

Output = [['Hi', 'going', 'college', 'meet','next', 'time', 'possible'],
          ['college', 'name','jntu', 'machine', 'learning', 'specialization'],
          ['Machine', 'learnin', 'favorite', 'subject' ,'using', 'python', 'implementation']]

Ответы [ 2 ]

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

Я верю, что это поможет вам.

stop_words = set(stopwords.words('english')) 
op=[]
for item in _input:
    word_tokens = word_tokenize(' '.join(item).lower()) 
    filtered_sentence = [w for w in word_tokens if not w in stop_words] 
    op.append(filtered_sentence)
print(op) 

Каждый элемент в вашем списке имеет две строки.Итак, объедините их в одну строку и удалите стоп-слова.

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

Начните как раньше

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize 

stop_words = set(stopwords.words('english')) 

input_ = [['Hi i am going to college', 'We will meet next time possible'],
         ['My college name is jntu', 'I am into machine learning specialization'],
         ['Machine learnin is my favorite subject' ,'Here i am using python for implementation']]

Я думаю, лучше назвать ваши входные данные input_, поскольку input уже имеет значение в Python.

Я бы начал с выравнивания вашего ввода. Вместо вложенного списка списков у нас должен быть один список предложений:

input_flatten = [sentence for sublist in input for sentence in sublist]
print(input_flatten)
>>>['Hi i am going to college',
 'We will meet next time possible',
 'My college name is jntu',
 'I am into machine learning specialization',
 'Machine learnin is my favorite subject',
 'Here i am using python for implementation']

Затем вы можете просмотреть каждое предложение и удалить стоп-слова следующим образом:

sentences_without_stopwords = []
for sentence in input_flatten:
    sentence_tokenized = word_tokenize(sentence)
    stop_words_removed = [word for word in sentence_tokenized if word not in stop_words]
    sentences_without_stopwords.append(stop_words_removed)

print(sentences_without_stopwords)
>>>[['Hi', 'going', 'college'],
 ['We', 'meet', 'next', 'time', 'possible'],
 ['My', 'college', 'name', 'jntu'],
 ['I', 'machine', 'learning', 'specialization'],
 ['Machine', 'learnin', 'favorite', 'subject'],
 ['Here', 'using', 'python', 'implementation']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...