SHARE
TWEET

Untitled

Bpgin Jan 17th, 2020 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:07:06) [MSC v.1900 32 bit (Intel)] on win32
  2. Type "copyright", "credits" or "license()" for more information.
  3. >>> from sklearn.feature_extraction.text #выделение слов и границ предложений (класс)
  4. import CountVectorizer, TfidfTransformer #методы
  5. #CountVectorizer вход - массив текстовых данных, выход - вектор признаков
  6. #TfidfTransformer представляет признаки в числовом формате, классификатор работает с числовыми данными
  7. #статистическая мера, используемая для оценки важности слова в контексте документа
  8. #TF — отношение числа вхождений некоторого слова к общему числу слов документа
  9. #IDF— инверсия частоты, с которой некоторое слово встречается в документах коллекции.
  10. #svm-линейная машина векторных носителей (алгоритм классификации текста)
  11. from sklearn import svm
  12. from sklearn.linear_model import LogisticRegression
  13. #LogisticRegression-метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.
  14.  
  15.  
  16. def reading(line):
  17.     row = line.strip().split('\t', maxsplit=1)
  18.     #strip()удаляет начальные и конечные пробелы
  19.     #str.split() # преобразует строку в список слов, как бы разделяет строку на пробелы
  20.     #maxsplit определяет максимальное количество частей
  21.     return row[1] if len(row) > 1 else ""    
  22.  
  23. target = [] # наши категории
  24.  
  25. with open('C:\\Users\\Bogin\\Desktop\\news_train.txt',  'r',encoding='utf-8' ) as f:
  26.     for line in f:
  27.         row = line.strip().split('\t', maxsplit=1) # split (что явл разделиелем, сколько разделителей)
  28.         target.append(row[0])
  29.  
  30.  
  31.        
  32. count_vect = CountVectorizer(preprocessor=reading)
  33. tfidf_transformer = TfidfTransformer()
  34.  
  35. X = count_vect.fit_transform(open('news_train.txt', 'r',encoding='utf-8')) # представляем новость в виде вектора
  36. X = tfidf_transformer.fit_transform(X)
  37.  
  38.  
  39.  
  40.  
  41. clf = LogisticRegression()
  42. #clf =  svm.SVC()
  43. clf.fit(X, target) #fit -метод засовывает в классификатор новость, категорию и обучается( обучение модели на обучающей выборке X, target)
  44.  
  45.  
  46. predicted_targets=[]
  47. with open('C:\\Users\\Bogin\\Desktop\\news_test.txt',  'r',encoding='utf-8' ) as f:
  48.     for line in f:
  49.         predicted = clf.predict(count_vect.transform([line]).toarray()[0]) # предсказываение категорий
  50.         predicted_targets.append(predicted[0])
  51.        
  52.  
  53. with open('C:\\Users\\Bogin\\Desktop\\news_output.txt', 'w') as  out:
  54.     for target in predicted_targets:
  55.         print(target, file=out)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top