我们收到来自第三方的滥用投诉。我以XML格式导出了全部投诉,然后将其编译为pandas DataFrame(),同时清除了诸如以下的电子邮件地址,主机名,URL和IP地址之类的内容。

文件“ learning_data.txt”由数千行组成,每行如下所示:

<label>:<a long string of text>


到目前为止的脚本

#!/usr/bin/env python

import pandas as pd


def main():
    data = open('learning_data.txt').readlines()

    print('Loading data...')
    labels, texts = ([], [])
    for line in data:
        label, text = line.split(':', 1)
        labels.append(label)
        texts.append(text)

    print('Adding to pandas DataFrame()')
    trainDF = pd.DataFrame()
    trainDF['label'] = labels
    trainDF['text'] = texts

    print(trainDF)


if __name__ == '__main__':
    main()


输出

                                                   label                                               text
8            Attacks and Reconnaissance__SSH Brute Force   Abuse from ... Dear Administrator,  We have d...
9                        Malicious Code/Traffic__Unknown    - [ Vulnerable Host in Canada] In support of...
10               Fraud__Copyright/Trademark Infringement   Unauthorized Use of Copyrights RE: TC--b--- *...
...                                                  ...                                                ...
43635                    Malicious Code/Traffic__Unknown   tdss report about ... last detected -- :: Sec...
43636                                    Fraud__Phishing   Issue : phishing attack at /// Dear Sir or Ma...


标签格式为__,因为我不希望进行多种分类(如果有的话)。

我见过的所有有关机器学习和文本分类的演示都使用了一些黑匣子数据源,例如20个新闻组等。由于我是从自己的数据开始的,因此很难将其包含在示例/教程中。

编辑:我正在使用Python 3.6.6

我从这里去哪里?

我应该使用sklearn还是其他图书馆?火炬?如何使用文字制作功能并将其添加到标签中?如何写出学习到的数据,以便随后可以使用另一个脚本使用该数据集来预测新文本的标签?

我从零开始学习机器学习,但是我在Python中做了很多与机器学习无关的工作。

最佳答案

您可以使用SKLearn CountVectorizerTF-IDF。这是该方法的粗略支出:

from sklearn.feature_extraction.text import CountVectorizer

from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split

count_vect = CountVectorizer()

text = ['text1', ..]

targets = ['abuse', ...]

matrix = count_vect.fit_transform(text)

encoder = LabelEncoder()
targets = encoder.fit_transform(targets)

randomForest = RandomForestClassifier()

randomForest.fit(matrix, targets)

关于python - 从两列(标签,文本)数据源的文本分类开始?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51372886/

10-12 18:11
查看更多