[英]How to identify a new pattern in a URL with a machine learning algorithm (Text mining)
在分析许多URL之后,我试图确定新的模式。 假设我们正在调查假设的网站Yoohle.com,它们的URL具有以下结构。
因此样本网址看起来像这样
www.yoohle.com/test_folder/test_page?q=hello+world&lan=en&pr=stackoverflow&br=chrome
如果我正在调查该网站的网络访问量,并且发现每个月的异常增加情况,我想找出造成这种情况的原因。 在此示例中,我可以仅解析URL并查看pr =值,因为它会告诉我是否存在新的合作关系(也许yoohle.com将为stackoverflow提供动力,并推动这种增长等)。
问题是,我如何构建可以比较2(或更多)个月的可靠产品,并确切地告诉我是什么在推动增长。 我想要得到这样的信息:“我们看到了增长,并且受到以下模式的驱动”
www.yoohle.com/test_folder/test_page%pr=stackoverflow%
棘手的部分是,与本示例不同,您对令牌的含义一无所知,因为我不知道令牌代表partner_id。 另一个问题是,如果我们逐个标记地查看标记,这将产生误导,因为lan = en还将与新的合作伙伴联系,并假设用户仍将英语作为语言。
我的想法是通过查看所有组合来分析令牌,但这非常昂贵(在此示例中为4 !,对于其他网站,可能为10+!)。 分析令牌本身并不能解决问题,因为我仍然需要分析令牌的值。
我尝试了k-means聚类,apriori算法对URL /文本挖掘进行了一些研究,但没有得到我想要的。 关于如何构建算法的任何想法都是有益的。
假设您正在查看实时数据,那么我们正在谈论分析给定月份中大约100K URL。
我会按照以下方式进行。 您可以创建下表:
URL
time
time_month -- time rounded to month, for demonstration purpose
q_bol -- boolean flag whether question parameter was used
q -- question parameter value
lan -- language parameter value
lan_bol -- boolean flag whether language parameter was used
pr -- partner parameter value
pr_bol -- boolean flag whether partner parameter was used
br -- browser parameter value
br_bol -- boolean flag whether browse parameter was used
现在,您可以编写一些查询。
with t as (
select
time_month,
q_bol, lan_bol, pr_bol, br_bol, count(*)
from
urldata
where
time_month > '2013-02-01'::date and time_month < '2013-04-01'::date -- last two months data
group by
time_month
)
, u as (
select
*,
t2-coalesce(t1,0) as abs_change, -- change in pattern MoM,
case when t1 is null then 0 else t2/t1 end as relchange -- relative change
from
t t1 full outer join t t2 using (q_bol, lan_bol, pr_bol, br_bol)
)
select * from u where abs_change > 5000 or relchange > 3
上面的查询为您提供了参数模式,其中每月变化量超过5000,或者每月变化量超过300%。 如果可以在sql系统中使用“ group by rollup
,那么它还将给出更高级别的聚合(三个参数,两个参数,一个参数的组合)。
您可以对参数的值执行相同的操作。 由于您不知道值会出现什么令牌,因此可以在以下表结构中解析url:
-- urls
id_url
url
time
-- parameters
id_url
token
value
然后,您将需要以某种方式重写上面的查询,例如,可以在PostgreSQL array_agg()
使用数组聚合函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.