Python: 将文本分类到类别中

我有一部分训练集

url  categoryebay.com/sch/Mens-Clothing-/1059/i.html?_from=R40&LH_BIN=1&Bottoms%2520Size%2520%2528Men%2527s%2529=33&Size%2520Type=Regular&_nkw=Джинсы&_dcat=11483&Inseam=33&rt=nc&_trksid=p2045573.m1684 Онлайн-магазинgoogle.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%D0%BA%D0%BA%D1%83%D0%BF%D0%BE%D0%BD%D1%8B%20aliexpress%202016  Searchgoogle.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&q=%D0%BA%D1%83%D0%BF%D0%BE%D0%BD%D1%8B+aliexpress+2016    Searchgoogle.ru/search?q=авито&oq=авито&aqs=chrome..69i57j0l5.1608j0j7&sourceid=chrome&es_sm=122&ie=UTF-8 Searchirecommend.ru/content/kogda-somnenii-byt-ne-mozhet-tolko-klear-blyu-pomozhet    Форумы и отзывыebay.com/sch/Mens-Clothing-/1059/i.html?_from=R40&LH_BIN=1&Bottoms%2520Size%2520%2528Men%2527s%2529=33&Size%2520Type=Regular&_dcat=11483&Inseam=33&_nkw=Джинсы&_sop=15  Онлайн-магазинebay.com/sch/Mens-Clothing-/1059/i.html?_from=R40&LH_BIN=1&Bottoms%2520Size%2520%2528Men%2527s%2529=33&Size%2520Type=Regular&_dcat=11483&Inseam=33&_nkw=Джинсы&_sop=15  Онлайн-магазинirecommend.ru/content/gramotnyi-razvod-na-dengi-bolshe-ne-kuplyu-vret   Форумы и отзывыgoogle.ru/search?q=яндекс&oq=яндекс&aqs=chrome..69i57j69i61l3j69i59l2.1383j0j1&sourceid=chrome&es_sm=93&ie=UTF-8    Searchgoogle.ru/search?q=авито&oq=авито&aqs=chrome..69i57j69i59j69i60.1095j0j1&sourceid=chrome&es_sm=93&ie=UTF-8  Searchotzovik.com/review_1399716.html#debug   Форумы и отзывыsvyaznoy.ru Онлайн-магазинmvideo.ru/smartfony-sotovye-telefony/apple-iphone-2927  Онлайн-магазинmvideo.ru/promo/rassrochka-0-0-12-mark24197850/f/category=iphone-914?sort=priceLow&_=1453896710474&categoryId=10    Онлайн-магазинsvyaznoy.ru/catalog/phone/224/tag/windows-phone Онлайн-магазинgoogle.it/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%D0%B5%D0%B2%D1%80%D0%BE%D1%81%D0%B5%D1%82%D1%8C    Searchvk.com   Social network

这是urlcategory之间的关联。另外,我还有测试集,我需要为每个url获取类别。

url    vk.com/topic-102849764_32295213stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-setgoogle.ru/search?q=learning+sample&oq=learning+sample&aqs=chrome..69i57.4063j0j1&sourceid=chrome&ie=UTF-8#newwindow=1&q=machine+learning+test+and+learnfacebook.comlocals.rutvzvezda.ru/news/vstrane_i_mire/content/201609261038-k6n1.htm

我不知道应该使用哪种算法来解决这个问题。我需要最佳方法来获得最高的准确性。我认为这是一个问题,因为我有多个类别。

我首先尝试解析html标签title,因为我认为仅凭url无法确定类别。


回答:

基本上,你将字符串分类到类别中。因此,你将使用分类器。但你不会只使用一个分类器,而是会测试几个并选择最准确的一个。

然而首先,你需要考虑每个url的特征。我预计如果你只是将url作为字符串并作为唯一的特征输入,你不会获得很高的准确性。

相反,你将预处理每个url以提取特征。相关/有用特征的选择在很大程度上取决于领域。一个特征可能是:

简单特征

  • 直到第一个点的第一个词,例如:facebook对于“facebook.com”

  • 整个字符串的长度

复杂特征

想象你为每个集群定义关键词,例如,对于“在线购物”集群,你将定义[promo, buy, shop, sell, price],然后你可以计算每个集群中字符串中出现的关键词数量作为一个特征

因此,你需要首先继续进行特征工程,其次比较分类器的性能。

额外输入:

类似的问题在StackOverflow上(关于URL特征)

文本特征提取

使用URL特征进行快速网页分类

编辑:一个例子

url = "irecommend.ru/content/kogda-somnenii-byt-ne-mozhet-tolko-klear-blyu-pomozhet"    f1  = len(url) = 76f2 = base = str(url).split("/",1)[0] = "irecommend.ru"f3 = segments = str(a).count("/") = 2

更多解决方案来自这里Eiyrioü von Kauyf

import stringcount = lambda l1,l2: sum([1 for x in l1 if x in l2])f4 = count_punctuation = count(a,set(string.punctuation))f5 = count_ascii = count(a,set(string.ascii_letters))

然而,所有这些例子都是非常简单的特征,并不涵盖URL的语义内容。根据你的目标变量(集群)的深度/复杂度,你可能需要使用基于n-gram的特征,例如这里

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注