Advertisement
Bpgin

Untitled

Jan 17th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement