基于文本信息的分类(即实现字符串核)

我需要对一组消费者数据运行聚类算法,但我不确定如何处理基于文本的字段(一个完美的例子是字母数字邮政编码,例如SE1 8XR)。

显然,我需要使用的是字符串核,我理解其基本概念,但还不够深入,无法成功实现。

理想情况下,我希望新的数值向量能够编码这样一个概念:两个邮政编码越不相似,它们之间的数据点就越远,但我不知道如何做到这一点,而且我找不到任何有用的教程、指南或教科书!

另外,我是在Python中进行这项工作,以防有人知道有用的库。


回答:

关于邮政编码

你不能将邮政编码作为字符串来比较。’AL1 1AA’是圣奥尔本斯,而’AB1 1AA’是阿伯丁。它们在编辑距离上非常接近,但CR6 7DX更接近圣奥尔本斯 🙂

你最好的方法可能是获取一些查找表(我知道你可以从Royalmail购买),或许可以从http://www.ordnancesurvey.co.uk/oswebsite/products/os-opendata.html获取,该表可以将邮政编码,或者至少是扇区’AL1 1’(甚至是地区’AL1’)映射到经纬度,然后你可以使用这些数据进行分组。

其他字符串

一个可能的选项是使用difflib.SequenceMatcher,它返回两个字符串彼此相似程度的百分比分数(还有很多其他算法:谷歌“遗传字符串算法”、“模糊字符串匹配”、“字符串相似性算法”等…)。将所有(可能)80%相似的字符串分组,并为这些字符串分配一个组 – 然后在这个组上进行聚类。

根据你的需求和数据的复杂性,你可能还会发现metaphone和双重metaphone(以及可能的ntlk)有用。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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