一、概述
本文是第 4 部分的续篇。
在第 4 部分中,我们使用迄今为止收集的数据使用 Doc2Vec 构建了一个模型。这一次,我们将调整模型并实现活动推荐功能。
这是完成的应用程序↓
比如想在天上飞的时候(搜索后也可以加海元素减山元素!)
例如,当你想被动物治愈时
2.检查以前的模型
首先,让我们使用我们上次制作的模型创建一个活动推荐函数。
import numpy as np
import pandas as pd
import MeCab
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
#モデルをロード
model = Doc2Vec.load('asoview.model')
#前回も使った関数
tagger = MeCab.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
def tokenize_ja(text):
node = tagger.parseToNode(text)
while node:
if node.feature.split(',')[0] in ["名詞","形容詞","形容動詞","動詞"]:#分かち書きで取得する品詞を指定
yield node.surface.lower() #単語を出力
node = node.next
def tokenize(content):
token = [token for token in tokenize_ja(content)]
return token
由于infer_vector() 方法可以推断用作参数的文档向量,因此为查询生成infer_vector() 并检查与其相似度高的活动。
doc = tokenize('リラックスしたい') #['リラックス', 'し']
infer = model.infer_vector(doc_words=doc) #inferベクトルの生成
model.dv.most_similar(infer) #inferベクトルと似ているもの
[('野沢温泉スポーツ公園', 0.845043420791626),
('RetreatDive(リトリートダイブ)', 0.8392682671546936),
('ピースフリーマリン', 0.8303577899932861),
('リブマックスリゾート安芸 宮浜温泉', 0.8288807272911072),
('PRO SHOP LODGE', 0.8255318999290466),
('きものレンタルwargo(ワーゴ) 東京浅草店', 0.8246656060218811),
('ハピピランドu3000ヒロロ弘前', 0.8239638209342957),
('Chisato Porcelarts Salon(チサト・ポーセラーツ・サロン)', 0.8234217166900635),
('カイトマリンスポーツ', 0.8213975429534912),
('GTダイバーズ沖永良部島', 0.8155992031097412)]
名列前茅的设施是野泽温泉运动公园。
野泽温泉运动公园有全长652m、高差122m的Zip Sky Ride。我们提供惊险刺激的非凡体验,在野泽温泉的大自然中空中漫步,让您全身感受清爽的微风!我们将安全放心地引导您,让您享受成为鸟的乐趣,享受在您面前展开的郁郁葱葱的绿色大自然!
资源:https://www.asoview.com/base/153252/很难说其他的成绩也不错。
准备几个查询并一次检查它们。queries = ['山で思いっきりはしゃぎたい', 'ストレスを解消したい', 'とにかくリラックスして体を休めたい', '空を飛びたい', '美味しいものをおなかいっぱい食べたい', '非日常感あふれる体験をしたい', 'カップルの記念日'] for i in queries: print(i) doc = tokenize(i) infer = model.infer_vector(doc_words=doc) print(model.dv.most_similar(infer)[:3]) print('='*20)山で思いっきりはしゃぎたい [('ヤマノオト', 0.7556900382041931), ('GREEN MOUNT(グリーンマウント)', 0.7556573152542114), ('森の国', 0.7545734643936157)] ==================== ストレスを解消したい [('海猫', 0.9106647372245789), ('トムソーヤマリンショップ', 0.910165548324585), ('ピースフリーマリン', 0.9088289737701416)] ==================== とにかくリラックスして体を休めたい [('海人石垣島(マリンちゅ)', 0.9215481281280518), ('海猫', 0.9207642674446106), ('株式会社むさしのくらふと', 0.9170313477516174)] ==================== 空を飛びたい [('株式会社むさしのくらふと', 0.9283918738365173), ('海人石垣島(マリンちゅ)', 0.9174885749816895), ('キッズユーエスランド 熊本八代店', 0.9089061617851257)] ==================== 美味しいものをおなかいっぱい食べたい [('海人石垣島(マリンちゅ)', 0.935479462146759), ('Marine activity NATURA(マリン アクティビティ ナトゥーラ)', 0.9015001654624939), ('SEA WORK(シーワーク)', 0.9001250863075256)] ==================== 非日常感あふれる体験をしたい [('TAKU DIVE 石垣島', 0.8821085095405579), ('海猫', 0.8778867721557617), ('梨花和服 祇園店', 0.8758808374404907)] ==================== カップルの記念日 [("Kid's US.LANDu3000イオン加古川店", 0.8514808416366577), ('SEA WORK(シーワーク)', 0.8326671123504639), ('海人石垣島(マリンちゅ)', 0.8318099975585938)] ====================海洋楚我成了一个强硬的推动者。
这次我们不是
infer_vector,而是为查询中的每个单词生成一个单词向量,并尝试找到与它们接近的活动。queries = ['山で思いっきりはしゃぎたい', 'ストレスを解消したい', 'とにかくリラックスして体を休めたい', '空を飛びたい', '美味しいものをおなかいっぱい食べたい', '非日常感あふれる体験をしたい', 'カップルの記念日'] for i in queries: print(i) doc = tokenize(i) word_vec = model.wv[doc] print(model.dv.most_similar(word_vec)[:3]) print('='*20)山で思いっきりはしゃぎたい [('RocaRoca(ロカロカ)アクティビティ', 0.5573384761810303), ('フォレストアドベンチャー奥神鍋', 0.5123566389083862), ('大石林山', 0.5011543035507202)] ==================== ストレスを解消したい [('筑紫野スポーツランド', 0.47226324677467346), ('砂丘YOGA®', 0.4182570278644562), ('T&Hボクサ・フィットネス', 0.39894649386405945)] ==================== とにかくリラックスして体を休めたい [('癒しの里 名張の湯', 0.48462826013565063), ('さわやかクールバードえびす', 0.483079195022583), ('宮の街道温泉江戸遊', 0.46548011898994446)] ==================== 空を飛びたい [('KPS那須高原パラグライダースクール', 0.7040980458259583), ('湘南スカイスポーツスクール', 0.6983148455619812), ('奄美パラグライダーガイドサービスHappysky(ハッピースカイ)', 0.6967601180076599)] ==================== 美味しいものをおなかいっぱい食べたい [('松阪農業公園ベルファーム', 0.5463957786560059), ('伊勢志摩みやげセンター王将u3000伊勢店', 0.49008798599243164), ('軽井沢ガーデンファームいちご園', 0.48717954754829407)] ==================== 非日常感あふれる体験をしたい [('無心窯陶芸教室', 0.41576093435287476), ('陶芸サロンHealingClay', 0.38910138607025146), ('ラ・ファミーユ中角', 0.3703257739543915)] ==================== カップルの記念日 [('彫金工房輝風', 0.4607360363006592), ('工房スミス札幌店', 0.45361363887786865), ('MATEI(マテイ)', 0.44840505719184875)] ====================这现在正在输出更好的结果!
既然是Doc2Vec,我也会尝试加减法。“我要在天上飞”——《山》
pos_vec = model.wv[tokenize('空を飛びたい')] neg_vec = model.wv[tokenize('山')] model.dv.most_similar(positive=pos_vec, negative=neg_vec)[0]('スカイ朝霧 パラグライダー・カヌースクール', 0.5966419577598572)“我想放松” - “温泉”
pos_vec = model.wv[tokenize('リラックスしたい')] neg_vec = model.wv[tokenize('温泉')] model.dv.most_similar(positive=pos_vec, negative=neg_vec)[0]('une graine(アングレンヌ)', 0.32486122846603394)这是一个手工制作的蜡烛/干花布置设施。
“那须动物王国”-“狮子”+“海豚”
model.dv.most_similar(positive=[model.dv['那須どうぶつ王国'],model.wv['イルカ']],negative=model.wv['ライオン'])[0]('伊勢夫婦岩ふれあい水族館シーパラダイス(伊勢シーパラダイス)', 0.7413780689239502)我个人对这个结果非常满意! !从动物园拿一只狮子,再加上一只海豚,你就有了一个水族馆!
3.尝试更改参数
该模型看起来比我想象的要好,但是我遇到了麻烦,但是我会尝试在学习过程中更改参数。
按窗口更改
窗口可以决定要考虑的左右字数。 (默认窗口=5)
窗口=1
model = Doc2Vec(window=1) model.build_vocab(taggeddocument) model.train(taggeddocument, total_examples=model.corpus_count, epochs=model.epochs) queries = ['山で思いっきりはしゃぎたい', 'ストレスを解消したい', 'とにかくリラックスして体を休めたい', '空を飛びたい', '美味しいものをおなかいっぱい食べたい', '非日常感あふれる体験をしたい', 'カップルの記念日'] for i in queries: print(i) doc = tokenize(i) word_vec = model.wv[doc] print(model.dv.most_similar(word_vec)[:3]) print('='*20)山で思いっきりはしゃぎたい [('Nipa yoga(ニパヨガ)', 0.6043249368667603), ('RocaRoca(ロカロカ)アクティビティ', 0.6040046215057373), ('KURA-RUN OUTDOORS', 0.5976560115814209)] ==================== ストレスを解消したい [('Resound(リサウンド)', 0.5740888714790344), ('JOHNNY STYLE 銀座店', 0.5551772117614746), ('JOHNNY STYLE 恵比寿店', 0.5483916401863098)] ==================== とにかくリラックスして体を休めたい [('ドライヘッドスパ専門店ヘッドミント', 0.5579400062561035), ('La vie en Rose 南森町店', 0.5525122880935669), ('癒しの里 名張の湯', 0.5520180463790894)] ==================== 空を飛びたい [('伊吹山パラグライダースクール', 0.6111437082290649), ('スカイエンジェル', 0.6041603088378906), ('三保の松原パラグライダー体験', 0.6028056144714355)] ==================== 美味しいものをおなかいっぱい食べたい [('古民家カフェu3000岡野ファーム', 0.6257206201553345), ('伊勢志摩みやげセンター王将u3000松阪店', 0.598393976688385), ('八ヶ岳エナジーファームu3000いちご畑としいたけの森', 0.5901493430137634)] ==================== 非日常感あふれる体験をしたい [('スカイダイブ北海道', 0.6004854440689087), ('ファームリゾートONJUKU(オンジュク)', 0.6002585887908936), ('翔笑璃', 0.5995974540710449)] ==================== カップルの記念日 [('Teamu3000Adventure(チームu3000アドベンチャー)', 0.5526367425918579), ('屋久島メッセンジャー', 0.5498412847518921), ('あとりえboss&Nonko(ボスアンドノンコ)', 0.5234155654907227)] ====================窗户=10
model = Doc2Vec(window=10) model.build_vocab(taggeddocument) model.train(taggeddocument, total_examples=model.corpus_count, epochs=model.epochs)[('RocaRoca(ロカロカ)アクティビティ', 0.4813646674156189), ('大石林山', 0.4802303612232208), ('富士漫遊社', 0.4595384895801544)] ==================== ストレスを解消したい [('筑紫野スポーツランド', 0.4924512505531311), ('白馬マウンテンクロス', 0.41904202103614807), ('フォレストアドベンチャー・湯の山', 0.38855403661727905)] ==================== とにかくリラックスして体を休めたい [('さわやかクールバードえびす', 0.47929099202156067), ('喜盛の湯', 0.4791018068790436), ('スパロイヤル川口', 0.46811315417289734)] ==================== 空を飛びたい [('スカイ朝霧 パラグライダー・カヌースクール', 0.7342751622200012), ('ライトドリーム', 0.7297751903533936), ('KPS那須高原パラグライダースクール', 0.7292381525039673)] ==================== 美味しいものをおなかいっぱい食べたい [('福田フルーツパーク', 0.5193634629249573), ('松阪農業公園ベルファーム', 0.5180649757385254), ('宿沢フルーツ農園本店', 0.4595303535461426)] ==================== 非日常感あふれる体験をしたい [('ニライナホリデイズ', 0.3319607973098755), ('陶芸サロンHealingClay', 0.3239280879497528), ('無心窯陶芸教室', 0.3155190646648407)] ==================== カップルの記念日 [('彫金工房輝風', 0.4435161054134369), ('iddo art jewelry 門司', 0.4213113486766815), ('MATEI(マテイ)', 0.41991835832595825)] ====================在这次考试中,由于窗口的变化并没有太大的感觉。
随纪元数变化
尝试更改 epoch 的数量。 (默认 10)
纪元=1
model.train(taggeddocument, total_examples=model.corpus_count, epochs=1)山で思いっきりはしゃぎたい [('横浜スカイクルーズ', 0.9358012080192566), ('MAGIC ISLAND(マジックアイランド)', 0.9324934482574463), ('蒜山ツアーデスク', 0.9272384643554688)] ==================== ストレスを解消したい [('アマニコガイドサービス', 0.7920987010002136), ('エバーブルー屋久島', 0.7913117408752441), ('Simple marine service(シンプルマリンサービス)', 0.7894357442855835)] ==================== とにかくリラックスして体を休めたい [('Simple marine service(シンプルマリンサービス)', 0.8138972520828247), ('All Blue(オールブルー)', 0.8033820390701294), ('石垣島 ADVENTURE PiPi(イシガキジマアドベンチャーピピ)', 0.8013563752174377)] ==================== 空を飛びたい [('水辺荘', 0.9459261894226074), ('奄美バギー&ナイトウォッチングガイドサービス', 0.9401012659072876), ('熱海マリンスポーツクラブ', 0.9334551692008972)] ==================== 美味しいものをおなかいっぱい食べたい [('石川トマト農園', 0.9277568459510803), ('松治郎の舗u3000伊勢おはらい町店', 0.8735381960868835), ('美杉リゾートInaka Tourism(いなかツーリズム)', 0.8695625066757202)] ==================== 非日常感あふれる体験をしたい [('陶芸の丘 想工房', 0.8812295794487), ('カヌーヴィレッジ長瀞', 0.8807774782180786), ('コンセプト', 0.8785371780395508)] ==================== カップルの記念日 [('東京タワーバンジーVR', 0.9225044250488281), ('変身スタジオ艷蓮(Adebasu)', 0.9071975350379944), ('GLASS-LAB(グラスラボ)', 0.9045374393463135)] ====================8秒学完,但我觉得自己要被大海或山带走,虽然我只是想放松一下身体……
纪元=100
model.train(taggeddocument, total_examples=model.corpus_count, epochs=100)山で思いっきりはしゃぎたい [('招き猫美術館', 0.3547191619873047), ('神戸市立須磨海浜水族園', 0.3358643352985382), ('屋久島フィールド情報センター', 0.3265390694141388)] ==================== ストレスを解消したい [('白馬マウンテンクロス', 0.3729977011680603), ('JOHNNY STYLE 恵比寿店', 0.34663766622543335), ('CARLSBAD(カールスバッド)', 0.3344053328037262)] ==================== とにかくリラックスして体を休めたい [('La vie en Rose 南森町店', 0.41961660981178284), ('溝口温泉 喜楽里', 0.4148680567741394), ('さわやかクールバードえびす', 0.3761550486087799)] ==================== 空を飛びたい [('VANスカイスポーツ', 0.4992501735687256), ('エアパークCOOパラグライダースクール', 0.4916755259037018), ('ウエストジャパンアウトドアスクール', 0.4839506149291992)] ==================== 美味しいものをおなかいっぱい食べたい [('心いちご園', 0.43655332922935486), ('いちごはうす西脇', 0.393851637840271), ('Pacha Beach(パチャビーチ)', 0.3371447026729584)] ==================== 非日常感あふれる体験をしたい [('平井焼', 0.4783760905265808), ('ニライナホリデイズ', 0.4316614270210266), ('陶房艸雲窯(トウボウソウウンガマ)', 0.4097640812397003)] ==================== カップルの記念日 [('手作りペアリングのAIGIS表参道店', 0.4420255124568939), ('garden心斎橋', 0.4237858057022095), ('アカネス大阪', 0.3967462480068207)] ====================这个用了8分钟。
当我想在山上玩得开心时,如果向我介绍招财猫博物馆,那将是一个问题。根据向量的维数变化
您可以指定向量由vector_size 表示的维数。 (默认为 100 维)
矢量尺寸=10
model = Doc2Vec(vector_size=10)山で思いっきりはしゃぎたい [('昭和記念公園セグウェイツアー', 0.9359950423240662), ('レイクサイドとうろ', 0.9157453179359436), ('龍宮クルーズ', 0.9150355458259583)] ==================== ストレスを解消したい [('やまさの軍艦島上陸周遊クルーズ・長崎みなとめぐり遊覧船(世界文化遺産ヘリテージクルーズ)', 0.8449451327323914), ('ボンファイアー(日光カヌー・カヤック体験)', 0.8366055488586426), ('支笏ガイドハウスかのあ', 0.8356747031211853)] ==================== とにかくリラックスして体を休めたい [('リブマックスリゾート天城湯ヶ島', 0.8387866616249084), ('天然温泉かきつばた', 0.8319327235221863), ('伊勢・船江温泉みたすの湯', 0.8318638801574707)] ==================== 空を飛びたい [('伊勢志摩スカイダイビングクラブ', 0.9471952319145203), ('白馬パラトピア五竜パラグライダースクール', 0.9374573826789856), ('ライトドリーム', 0.9350649118423462)] ==================== 美味しいものをおなかいっぱい食べたい [('いのさんの観光農園', 0.8691805601119995), ('軽井沢ガーデンファームいちご園', 0.8687654733657837), ('宿沢フルーツ農園本店', 0.8655694723129272)] ==================== 非日常感あふれる体験をしたい [('CLUBMAN(クラブマン)', 0.862310528755188), ('はぎまえ698', 0.8317584991455078), ('ブルーウォーターアドベンチャーズ カケロマ', 0.8119956254959106)] ==================== カップルの記念日 [('LAWAKU(ラワク)', 0.7508366107940674), ('ハナマルキ みそ作り体験館', 0.7087247967720032), ('鹿野そば道場', 0.6958708763122559)] ====================有点令人惊讶的是,即使使用 10 个维度,您也可以获得各种各样的结果。
矢量尺寸=500
model = Doc2Vec(vector_size=500)山で思いっきりはしゃぎたい [('RocaRoca(ロカロカ)アクティビティ', 0.5462843775749207), ('CANOE PRO', 0.49989041686058044), ('リトルピークス', 0.4914983808994293)] ==================== ストレスを解消したい [('筑紫野スポーツランド', 0.4884355068206787), ('白馬マウンテンクロス', 0.4086739420890808), ('天狗温泉浅間山荘', 0.37805309891700745)] ==================== とにかくリラックスして体を休めたい [('鶴見緑地湯元 水春', 0.46439605951309204), ('癒しの里 名張の湯', 0.46235036849975586), ('ヨーガアムリタ', 0.4453602731227875)] ==================== 空を飛びたい [('KPS那須高原パラグライダースクール', 0.6869857311248779), ('白馬パラトピア五竜パラグライダースクール', 0.6797089576721191), ('スカイエンジェル', 0.6769261956214905)] ==================== 美味しいものをおなかいっぱい食べたい [('松阪農業公園ベルファーム', 0.5387112498283386), ('伊勢志摩みやげセンター王将u3000伊勢店', 0.45953401923179626), ('宿沢フルーツ農園本店', 0.4589420557022095)] ==================== 非日常感あふれる体験をしたい [('重要文化財u3000菊屋家住宅', 0.3608725070953369), ('無心窯陶芸教室', 0.355581670999527), ('平井焼', 0.35266488790512085)] ==================== カップルの記念日 [('アカネス 清水店', 0.440045028924942), ('彫金工房輝風', 0.42943423986434937), ('iddo art jewelry 門司', 0.42922601103782654)] ====================是不是一种既不可能也不不可能的感觉?
4.总结
我尝试通过更改上次制作的模型的参数来调整模型。
在这种情况下,默认设置是一个很好的模型,所以最好保留默认设置而不是乱用它们。这是成品↓
第 1 部分:[Python] Asoview 寻找看不见的活动!刮
第 2 部分:第 2 部分 [Python] Asoview 寻找看不见的活动!分析
第 3 部分:第 3 部分 [Python] Asoview 寻找看不见的活动!口碑刮
Part 4: Part 4 [Python] 求还没看过的活动Asoview!机器学习 (Doc2Vec)
第 5 部分:本文
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308632955.html