मेरे पास एक CSV फ़ाइल (corpus.csv) है जिसमें निम्न प्रारूप में वर्गीकृत सार तत्व (पाठ) शामिल हैं:

Institute,    Score,    Abstract


----------------------------------------------------------------------


UoM,    3.0,    Hello, this is abstract one

UoM,    3.2,    Hello, this is abstract two and yet counting.

UoE,    3.1,    Hello, yet another abstract but this is a unique one.

UoE,    2.2,    Hello, please no more abstract.

मैं अजगर में एक केएनएन वर्गीकरण कार्यक्रम बनाने की कोशिश कर रहा हूं, जो एक उपयोगकर्ता इनपुट सार प्राप्त करने में सक्षम है, जैसे "यह एक नया अनूठा सार है" और फिर इस उपयोगकर्ता इनपुट सार को कॉर्पस (सीएसवी) के सबसे करीब वर्गीकृत करता है और वापस भी करता है अनुमानित सार का स्कोर/ग्रेड। मैं उसे कैसे प्राप्त कर सकता हूं?

मेरे पास निम्न कोड है:

from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords
import numpy as np
import pandas as pd
from csv import reader,writer
import operator as op
import string

#Read data from corpus
r = reader(open('corpus.csv','r'))
abstract_list = []
score_list = []
institute_list = []
row_count = 0
for row in list(r)[1:]:
    institute,score,abstract = row
    if len(abstract.split()) > 0:
      institute_list.append(institute)
      score = float(score)
      score_list.append(score)
      abstract = abstract.translate(string.punctuation).lower()
      abstract_list.append(abstract)
      row_count = row_count + 1

print("Total processed data: ", row_count)

#Vectorize (TF-IDF, ngrams 1-4, no stop words) using sklearn -->
vectorizer = TfidfVectorizer(analyzer='word', ngram_range=(1,4),
                     min_df = 0, stop_words = 'english', sublinear_tf=True)
response = vectorizer.fit_transform(abstract_list)
feature_names = vectorizer.get_feature_names()

उपरोक्त कोड में, मैं ऊपर बताए अनुसार KNN वर्गीकरण के लिए TF-IDF गणना से सुविधाओं का उपयोग कैसे कर सकता हूं? (शायद sklearn.neighborsKNeighborsClassifier ढांचे का उपयोग कर)

पी.एस. इस आवेदक मामले के लिए वर्ग सार के संबंधित अंक/ग्रेड हैं।

मेरे पास विजुअल डीप लर्निंग में पृष्ठभूमि है, हालांकि, मुझे टेक्स्ट वर्गीकरण में विशेष रूप से केएनएन का उपयोग करने में बहुत ज्ञान नहीं है। कोई भी सहायताकाफी प्रशंसनीय होगी। पहले ही, आपका बहुत धन्यवाद।

2
Somdip Dey 26 नवम्बर 2019, 21:31

1 उत्तर

सबसे बढ़िया उत्तर

KNN एक वर्गीकरण एल्गोरिथम है - जिसका अर्थ है कि आपके पास एक वर्ग विशेषता होनी चाहिए। KNN TFIDF के आउटपुट को इनपुट मैट्रिक्स - TrainX के रूप में उपयोग कर सकता है, लेकिन आपको अभी भी अपने डेटा में प्रत्येक पंक्ति के लिए TrainY - क्लास की आवश्यकता है। हालाँकि, आप KNN प्रतिगामी का उपयोग कर सकते हैं। कक्षा चर के रूप में अपने स्कोर का प्रयोग करें:

from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords
import numpy as np
import pandas as pd
from csv import reader,writer
import operator as op
import string
from sklearn import neighbors

#Read data from corpus
r = reader(open('corpus.csv','r'))
abstract_list = []
score_list = []
institute_list = []
row_count = 0
for row in list(r)[1:]:
    institute,score,abstract = row[0], row[1], row[2]
    if len(abstract.split()) > 0:
      institute_list.append(institute)
      score = float(score)
      score_list.append(score)
      abstract = abstract.translate(string.punctuation).lower()
      abstract_list.append(abstract)
      row_count = row_count + 1

print("Total processed data: ", row_count)

#Vectorize (TF-IDF, ngrams 1-4, no stop words) using sklearn -->
vectorizer = TfidfVectorizer(analyzer='word', ngram_range=(1,4),
                     min_df = 0, stop_words = 'english', sublinear_tf=True)
response = vectorizer.fit_transform(abstract_list)
classes = score_list
feature_names = vectorizer.get_feature_names()

clf = neighbors.KNeighborsRegressor(n_neighbors=1)
clf.fit(response, classes)
clf.predict(response)

"भविष्यवाणी" प्रत्येक उदाहरण के लिए स्कोर की भविष्यवाणी करेगा।

2
Roee Anuar 27 नवम्बर 2019, 16:52