এনল্টক বা পাইথন ব্যবহার করে স্টপ শব্দগুলি কীভাবে সরিয়ে ফেলা যায়


110

সুতরাং আমার কাছে একটি ডেটাসেট রয়েছে যা আমি ব্যবহার বন্ধ করে শব্দগুলি সরিয়ে দিতে চাই

stopwords.words('english')

আমি কীভাবে এই কোডগুলিতে কেবল এই শব্দগুলি ব্যবহার করতে পারি তা ব্যবহার করে লড়াই করছি। এই ডেটাসেটের শব্দের একটি তালিকা আমার কাছে ইতিমধ্যে রয়েছে, আমি যে অংশটির সাথে লড়াই করছি তার সাথে তালিকার তুলনা করা এবং স্টপ শব্দগুলি সরিয়ে দেওয়া। কোন সাহায্য প্রশংসা করা হয়।


4
আপনি স্টপওয়ার্ডগুলি কোথা থেকে পেয়েছেন? এটি কি এনএলটিকে থেকে এসেছে?
গণ্ডগোল_আরোস্টার

37
from nltk.corpus import stopwordsভবিষ্যতের গুগলদের জন্য @ ম্যাটো'ব্রায়ান
ড্যানোডোভোভান

13
এছাড়া চালানোর জন্য প্রয়োজনীয় nltk.download("stopwords")অর্ডার স্টপওয়ার্ড অভিধান উপলব্ধ করতে হবে।
এসএফসিসি


1
মনোযোগ দিন যে "না" এর মতো একটি শব্দও এনল্টকে একটি স্টপওয়ার্ড হিসাবে বিবেচিত হয়। আপনি যদি অনুভূতি বিশ্লেষণ, স্প্যাম ফিল্টারিংয়ের মতো কিছু করেন তবে একটি প্রত্যাখ্যান বাক্যটির পুরো অর্থ পরিবর্তন করতে পারে এবং যদি আপনি এটি প্রক্রিয়াজাতকরণের স্তর থেকে সরান, আপনি সঠিক ফলাফল পেতে পারেন না।
ডারকভ

উত্তর:


206
from nltk.corpus import stopwords
# ...
filtered_words = [word for word in word_list if word not in stopwords.words('english')]

উভয় জবাবের জন্য ধন্যবাদ, তারা উভয়ই কাজ করে যদিও মনে হয় আমার কোডে কোনও ত্রুটি আছে যা সঠিকভাবে স্টপ লিস্টকে কাজ করা থেকে বিরত করছে। এটি কি নতুন প্রশ্ন পোস্ট হওয়া উচিত? ঠিক কীভাবে এখানে এখনও চারপাশের জিনিসগুলি কাজ করে তা নিশ্চিত নয়!
অ্যালেক্স

51
কর্মক্ষমতা উন্নত করতে, stops = set(stopwords.words("english"))পরিবর্তে বিবেচনা করুন।
ইসাক্কারলসন

1
>>> আমদানি নল্টক >>> nltk.download () উত্স

2
stopwords.words('english')লোয়ার কেস সুতরাং তালিকায় কেবলমাত্র ছোট [w.lower() for w in word_list]
আকারের

19

আপনি একটি সেট ডিফ করতেও পারেন, উদাহরণস্বরূপ:

list(set(nltk.regexp_tokenize(sentence, pattern, gaps=True)) - set(nltk.corpus.stopwords.words('english')))

15
দ্রষ্টব্য: এটি বাক্যটি একটি SET এ রূপান্তর করে যা সমস্ত সদৃশ শব্দকে সরিয়ে দেয় এবং ফলস্বরূপ আপনি ফলাফলের উপর ফ্রিকোয়েন্সি গণনা ব্যবহার করতে সক্ষম হবেন না
ডেভিড দেহঘান

একটি সেটে রূপান্তরকরণ একটি গুরুত্বপূর্ণ শব্দের একাধিক উপস্থিতিগুলি স্ক্র্যাপ করে বাক্য থেকে কার্যকর তথ্য সরিয়ে ফেলতে পারে।
উজ্জ্বল

14

আমি মনে করি আপনার কাছে শব্দের (ওয়ার্ড_লিস্ট) একটি তালিকা রয়েছে যা থেকে আপনি স্টপওয়ার্ডগুলি সরাতে চান। আপনি এরকম কিছু করতে পারেন:

filtered_word_list = word_list[:] #make a copy of the word_list
for word in word_list: # iterate over word_list
  if word in stopwords.words('english'): 
    filtered_word_list.remove(word) # remove word from filtered_word_list if it is a stopword

5
এটি ড্যারেন টমাসের তালিকা বোঝার চেয়ে সম্পূর্ণ ধীর হবে ...
ড্রেভিকো ২

12

Nltk স্টপ-শব্দ সহ সমস্ত ধরণের স্টপ-শব্দ বাদ দিতে, আপনি এরকম কিছু করতে পারেন:

from stop_words import get_stop_words
from nltk.corpus import stopwords

stop_words = list(get_stop_words('en'))         #About 900 stopwords
nltk_words = list(stopwords.words('english')) #About 150 stopwords
stop_words.extend(nltk_words)

output = [w for w in word_list if not w in stop_words]

আমি len(get_stop_words('en')) == 174বনাম পাচ্ছিlen(stopwords.words('english')) == 179
রুবেনকার্ট

6

stop-wordsকেবলমাত্র এই জন্য খুব সহজ হালকা-ওজনের পাইথন প্যাকেজ রয়েছে ।

প্রথমটি ব্যবহার করে প্যাকেজ ইনস্টল করুন: pip install stop-words

তারপরে আপনি তালিকা বোধগম্যতা ব্যবহার করে আপনার শব্দগুলিকে এক লাইনে মুছে ফেলতে পারেন:

from stop_words import get_stop_words

filtered_words = [word for word in dataset if word not in get_stop_words('english')]

এই প্যাকেজটি, ডাউনলোড (অসদৃশ nltk) খুব হালকা ওজন উভয়ের জন্য কাজ করে Python 2এবং Python 3, এবং এটি মত অনেক অন্যান্য ভাষার জন্য স্টপ শব্দ আছে:

    Arabic
    Bulgarian
    Catalan
    Czech
    Danish
    Dutch
    English
    Finnish
    French
    German
    Hungarian
    Indonesian
    Italian
    Norwegian
    Polish
    Portuguese
    Romanian
    Russian
    Spanish
    Swedish
    Turkish
    Ukrainian

3

আপনার ডেটা থেকে স্টপওয়ার্ডগুলি সরাতে পাঠ্যপরিচালক গ্রন্থাগার ব্যবহার করুন ।

এই লিঙ্কটি অনুসরণ করুন: https://yugantm.github.io/textcleaner/docamentation.html#remove_stpwrds

এই লাইব্রেরির সাথে এটি করতে এই পদক্ষেপগুলি অনুসরণ করুন।

pip install textcleaner

ইনস্টল করার পরে:

import textcleaner as tc
data = tc.document(<file_name>) 
#you can also pass list of sentences to the document class constructor.
data.remove_stpwrds() #inplace is set to False by default

স্টপ-শব্দগুলি সরাতে উপরের কোডটি ব্যবহার করুন।


1

আপনি এই ফাংশনটি ব্যবহার করতে পারেন, আপনার লক্ষ্য করা উচিত যে আপনাকে সমস্ত শব্দ কমিয়ে আনা দরকার

from nltk.corpus import stopwords

def remove_stopwords(word_list):
        processed_word_list = []
        for word in word_list:
            word = word.lower() # in case they arenet all lower cased
            if word not in stopwords.words("english"):
                processed_word_list.append(word)
        return processed_word_list

1

ফিল্টার ব্যবহার :

from nltk.corpus import stopwords
# ...  
filtered_words = list(filter(lambda word: word not in stopwords.words('english'), word_list))

3
যদি word_listবড় এই কোড খুব ধীর। এটা ব্যবহার করার পূর্বে একটি সেটে stopwords তালিকা রূপান্তর করাই ভালো: .. in set(stopwords.words('english'))
রবার্ট

0

আপনি এই মুহুর্তে উত্তরটি কোনও স্ট্রিংয়ের মধ্যে পেতে চান (ফিল্টার করা শব্দের তালিকার পরিবর্তে):

STOPWORDS = set(stopwords.words('english'))
text =  ' '.join([word for word in text.split() if word not in STOPWORDS]) # delete stopwords from text

ফরাসী l এ এই পদ্ধতির ব্যবহার করবেন না অন্যথায় ক্যাপচার হবে না।
ডেভিড বিউচেমিন

0

আপনার ডেটা কোনও হিসাবে সংরক্ষণ করা হয় Pandas DataFrame, আপনি remove_stopwordsটেক্সটোরো থেকে ডিফল্টরূপে NLTK স্টপওয়ার্ড তালিকা ব্যবহার করতে পারেন ।

import pandas as pd
import texthero as hero
df['text_without_stopwords'] = hero.remove_stopwords(df['text'])

0
from nltk.corpus import stopwords 

from nltk.tokenize import word_tokenize 

example_sent = "This is a sample sentence, showing off the stop words filtration."

  
stop_words = set(stopwords.words('english')) 
  
word_tokens = word_tokenize(example_sent) 
  
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) 

-3
   import sys
print ("enter the string from which you want to remove list of stop words")
userstring = input().split(" ")
list =["a","an","the","in"]
another_list = []
for x in userstring:
    if x not in list:           # comparing from the list and removing it
        another_list.append(x)  # it is also possible to use .remove
for x in another_list:
     print(x,end=' ')

   # 2) if you want to use .remove more preferred code
    import sys
    print ("enter the string from which you want to remove list of stop words")
    userstring = input().split(" ")
    list =["a","an","the","in"]
    another_list = []
    for x in userstring:
        if x in list:           
            userstring.remove(x)  
    for x in userstring:           
        print(x,end = ' ') 
    #the code will be like this

আপনার অপসারণ করতে হবে এমন প্রতিটি শব্দ উল্লেখ করার চেয়ে স্টপওয়ার্ড.ওয়ার্ডস ("ইংলিশ") যুক্ত করা ভাল।
নেতৃত্বে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.