Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:07:06) [MSC v.1900 32 bit (Intel)] on win32
- Type "copyright", "credits" or "license()" for more information.
- >>> from sklearn.feature_extraction.text #выделение слов и границ предложений (класс)
- import CountVectorizer, TfidfTransformer #методы
- #CountVectorizer вход - массив текстовых данных, выход - вектор признаков
- #TfidfTransformer представляет признаки в числовом формате, классификатор работает с числовыми данными
- #статистическая мера, используемая для оценки важности слова в контексте документа
- #TF — отношение числа вхождений некоторого слова к общему числу слов документа
- #IDF— инверсия частоты, с которой некоторое слово встречается в документах коллекции.
- #svm-линейная машина векторных носителей (алгоритм классификации текста)
- from sklearn import svm
- from sklearn.linear_model import LogisticRegression
- #LogisticRegression-метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.
- def reading(line):
- row = line.strip().split('\t', maxsplit=1)
- #strip()удаляет начальные и конечные пробелы
- #str.split() # преобразует строку в список слов, как бы разделяет строку на пробелы
- #maxsplit определяет максимальное количество частей
- return row[1] if len(row) > 1 else ""
- target = [] # наши категории
- with open('C:\\Users\\Bogin\\Desktop\\news_train.txt', 'r',encoding='utf-8' ) as f:
- for line in f:
- row = line.strip().split('\t', maxsplit=1) # split (что явл разделиелем, сколько разделителей)
- target.append(row[0])
- count_vect = CountVectorizer(preprocessor=reading)
- tfidf_transformer = TfidfTransformer()
- X = count_vect.fit_transform(open('news_train.txt', 'r',encoding='utf-8')) # представляем новость в виде вектора
- X = tfidf_transformer.fit_transform(X)
- clf = LogisticRegression()
- #clf = svm.SVC()
- clf.fit(X, target) #fit -метод засовывает в классификатор новость, категорию и обучается( обучение модели на обучающей выборке X, target)
- predicted_targets=[]
- with open('C:\\Users\\Bogin\\Desktop\\news_test.txt', 'r',encoding='utf-8' ) as f:
- for line in f:
- predicted = clf.predict(count_vect.transform([line]).toarray()[0]) # предсказываение категорий
- predicted_targets.append(predicted[0])
- with open('C:\\Users\\Bogin\\Desktop\\news_output.txt', 'w') as out:
- for target in predicted_targets:
- print(target, file=out)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement