机器学习项目 (代码梳理)where2go第二弹

因为在文档中梳理的内容粘到CSDN后有些格式错乱,所以建议结合我的资源中PPT观看。

目录

1.进度计划. 1

2.系统需求. 2

3.数据收集与数据库介绍. 4

wikivoyage_xml_to_json.py:. 4

wikivoyage_geotags_sql.py 5

scrap_wikivoyage_banners.py 5

4.数据EDA 5

5.实现模型. 7

6.模型展示与项目演示. 8

 

 

1.进度计划

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

2019年9月—2019年10月

进行数据收集,获取并分析互联网上景点的相关信息

 

2019年10月—2019年11月

进行探索性数据分析(EDA)和数据清理

 

2019年11月—2019年12月

实现基于gensim 的 word2vec 模型,并编写矢量化用户搜索查询的函数

筛选实际地理位置的推荐,以geojson格式输出目的地的函数

 

2019年12月—2020年1月

设计实现Web 端应用程序,完成核心推荐模型在Web端的展示

(正在进行)

2020年1月—2020年2月

丰富用户交互功能,对客户端进行测试,并解决测试发现的问题

 

2020年2月—2020年3月

完成软件开发文档,编撰用户手册。

2.系统需求

(这个和开题基本一致,就简略回顾一下)

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

系统功能结构图

3.数据收集与数据库介绍

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

2019年9月—2019年10月

进行数据收集,获取并分析互联网上景点的相关信息

主要有三个wikivoyage数据的文件https://en.wikivoyage.org/

https://dumps.wikimedia.org/

 

 

Wikivoyage 以 XML 格式提供了文章的数据转储:

wikivoyage-latest-pages-articles.xml

Wikivoyage中景点地理位置(https://dumps.wikimedia.org/enwikivoyage/latest/):

enwikivoyage-latest-geo_tags.sql

Wikivoyage中文章的信息:

enwikivoyage-latest-page.sql

 

wikivoyage_xml_to_json.py:

此文件的目的是将 Wikivoyage 旅行指南文章转换为 JSON 格式(获得wikivoyage.json)。Wikivoyage 以 XML 格式提供了文章的数据转储,我将其转换为 JSON 格式,以便用pandas进行探索性数据分析。

                                   xmltodict

wikivoyage-latest-pages-articles.xml------->wikivoyage.json

 

wikivoyage_geotags_sql.py

此文件的目的是收集文章(地点)的地理位置。Wikivoyage 提供了文章的地理位置作为 sql 文件。我创建自己的 MySQL 数据库来加载和查询数据。我还在这个文件做了一些数据清理,删除口音等异常数据。

-->geotag_dict.pkl

SELECT p.page_id, p.page_title, p.page_len, g.gt_lat, g.gt_lon

            FROM geo_tags g

            JOIN page p(先放完整sql)

titles that have concatenated names as the values.

San Francisco: San_Francisco

标准化连续化地点名称(normalize)方便将多词地名作为同一个值

 

scrap_wikivoyage_banners.py

此文件包含用于从 wikivoyage 中抓取文章的banner的代码。我也用这个来收集wikivoyage page的标准URL。我不得不在Wikivoyage上使用一个特殊的搜索页面搜索目的地,以克服地名中的微小语法差异

get_image_and_link

geotag_dict.pkl-------------> canonical wikivoyage url

              search base url

-------------->img_path-->png

BeautifulSoup

 --->geotag_imglink_wikibanner.pkl

(找到真实链接为https://en.wikivoyage.org/wiki/Fj%C3%A6rland)

数据库也放一下

(将以上信息可视化)

4.数据EDA

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

2019年9月—2019年10月

进行数据收集,获取并分析互联网上景点的相关信息

 

2019年10月—2019年11月

进行探索性数据分析(EDA)和数据清理

Gensim在主题建模有出色的实现,然而挑战在于如何提取清晰,隔离,有意义的高质量主题。这在很大程度上取决于文本预处理的质量及找到最佳主题数量的策略。

EDA:

加载、清理、挑选数据作为word2vec的输入格式

word2vec的输入格式是句子列表,其中每个句子都表示为一个单词列表。

通过Ipython notebook已执行探索性数据分析和数据清理。Wikivoyage数据被加载、清理、挑选出来作为 word2vec 的输入格式,该格式是句子列表,其中每个句子都表示为单词列表。

 

wikivoyage.json

文章数据集中比较重要的是page->title、text

 

去除变音符号(diacritics)Title作为关键字存储页面

 

You can see that some articles are files, categories ,etc with : in their names.(特殊格式的文章)

Lets see how many of these there are.

 

two most common special type articles:MediaWiki& Wikivoyage

are not actual travel guide articles,remove

articles

MediaWiki& Wikivoyage—

 

check out the article lenghts

删除一地多名重定向文章(disambiguation articles)

删除文内特殊字符

 

convert_article_into_list_of_words

markdown(article)------------> article

                  mistune.      

----------------> paragraph

BeautifulSoup

---------------> sentences

nltk.tokenize

---------------> list of words

Split

                     --------> wikivoyage_list_of_words.pkl

5.实现模型

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

2019年9月—2019年10月

进行数据收集,获取并分析互联网上景点的相关信息

 

2019年10月—2019年11月

进行探索性数据分析(EDA)和数据清理

 

2019年11月—2019年12月

实现基于gensim 的 word2vec 模型,并编写矢量化用户搜索查询的函数

筛选实际地理位置的推荐,以geojson格式输出目的地的函数

Where2go基于谷歌创建的名为word2vec的模型。Word2vec 是一个神经网络,具有 1 个隐藏层,该层具有连续的单词袋 (CBOW) 或skip-grams实现。where2go 使用的版本使用skip-grams 和hierarchical softmax进行优化。

在高层级上,word2vec 试图训练神经网络,以参数化一个模型,该模型可以预测语料库中每个单词的周围单词。然后,这些预测用于回推和优化参数,使具有相似上下文的单词更紧密地联系在一起,同时远离具有不同上下文的单词。然后,使用输入隐藏层加权矩阵(也是单词的矢量表示形式)来深入了解单词的含义/相似性。

在我的model.py 文件中,我实现了 gensim 的 word2vec 模型,并编写了矢量化用户搜索查询的函数,和将建议筛选到实际地理位置、以geojson格式输出目的地的函数。

word2vec_model

gensim的主题建模

geotag_dict.pkl

wikivoyage_list_of_words.pkl

----------------------------->bigram(文档双词模型)

Genism.Phrases(min_count=10)

----------------------------> model_bigrams(?)

gensim.models.Word2Vec

    --------> word2vec_model.pkl

       ------------>top_places(geojson.json)

       most_similar

make_geo_marker

implement

拟合模型(fit word2vec model using gensim with upto trigrams)

wikivoyage_list(wikivoyage_list_of_words.pkl)

    --------> bigram

    Phrases

    -------->trigrams

    Phrases

    -------->model_bigrams

    Word2Vec

    -------->init_sims(锁定模型)

 

parse_search_query:

query string--->term

      +

    ----->multiplier

           Word

       ----->vector

       underscore*

       normalize

           -------->recommended sites

           most_similar

      

6.模型展示与项目演示

2019年8月—2019年9月

收集查阅资料,并进行社会调查,确定系统需求

 

2019年9月—2019年10月

进行数据收集,获取并分析互联网上景点的相关信息

 

2019年10月—2019年11月

进行探索性数据分析(EDA)和数据清理

 

2019年11月—2019年12月

实现基于gensim 的 word2vec 模型,并编写矢量化用户搜索查询的函数

筛选实际地理位置的推荐,以geojson格式输出目的地的函数

 

2019年12月—2020年1月

设计实现Web 端应用程序,完成核心推荐模型在Web端的展示

 

模型在Web端的展示

我能够运行我自己的网站使用python Flask。我使用 javascript 对搜索引擎执行 AJAX 调用,以便可以在模型上运行用户的搜索查询,以预测最相似的位置并在地图上显示我的建议。Flask 文件名为"app.py",可在文件夹"webapp"中找到;"index.html"文件包含 html javascript,可以在文件夹"模板"中找到。我用Bootstrap来设计我的网站。

搭建过程

request--->

       post

       ---->

       most_similar

       ---------------> top recommended(json)

       wiki_url

       img_path

       gt_lat

       gt_lon

截图:

相似地点推荐

地点、特征组合:

权重组合:

 

销量最好的葡萄酒之一是由纳帕谷百亩地酒庄酿造的纯金箔白葡萄酒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值