In letzter Zeit ist Doc2Vec interessant, deshalb mache ich verschiedene Dinge. Ich habe den folgenden Artikel gefunden und ihn selbst ausprobiert. → Ich habe mit Doc2Vec nach einer ähnlichen MTG-Karte gesucht
Word2Vec betrachtet Word als Vektor, aber Doc2Vec (Paragraph2Vec) sieht Document als eine Menge von Word und weist einen Vektor zu, um die Ähnlichkeit zwischen Dokumenten und Vektorberechnung zu realisieren. ..
Zum Beispiel kann auch die Ähnlichkeit zwischen Nachrichtenartikeln, die Ähnlichkeit zwischen Lebensläufen, die Ähnlichkeit zwischen Büchern und natürlich die Ähnlichkeit zwischen dem Profil einer Person und einem Buch berechnet werden. Alle sind zielgerichtet.
Quelle: http://qiita.com/okappy/items/32a7ba7eddf8203c9fa1
Blizzards Heartstone Karte 922 Texte
Kartenmuster
Der Korpus wird aus der [Hearthstone Card List] von 4 Schildkröten (http://www.4gamer.net/games/209/G020915/FC20140702001/) entfernt. Diesmal habe ich Scrapy benutzt. Erstellen Sie ein Projekt mit dem folgenden Befehl.
terminal
$ scrapy startproject hearth_stone
Die folgende Datei wird erstellt.
terminal
$ tree hearth_stone/
hearth_stone
├── hearth_stone
│ ├── __init__.py
│ ├── __pycache__
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg
4 directories, 6 files
Definieren Sie zunächst die Datenstruktur, die an "items.py" ausgegeben werden soll. Dieses Mal brauche ich nur den Namen und den Text, aber ich kann ihn in Zukunft verwenden, damit ich alle Daten auf der Karte abkratzen kann.
items.py
# -*- coding: utf-8 -*-
import scrapy
class HearthStoneItem(scrapy.Item):
name = scrapy.Field()
rarity = scrapy.Field()
ruby = scrapy.Field()
type = scrapy.Field()
hero = scrapy.Field()
race = scrapy.Field()
text = scrapy.Field()
mana = scrapy.Field()
attack = scrapy.Field()
health = scrapy.Field()
Erstellen Sie als Nächstes eine Spinne (Crawler).
terminal
# For example, to create a new spider:
# scrapy genspider mydomain mydomain.com
$ scrapy genspider hearthstone 4gamer.net
Die folgende Datei wird erstellt.
spiders/hearthstone.py
# -*- coding: utf-8 -*-
import scrapy
class HearthstoneSpider(scrapy.Spider):
name = "hearthstone"
allowed_domains = ["4gamer.net"]
start_urls = ['http://4gamer.net/']
def parse(self, response):
pass
Schreiben Sie dies für die 4-Schildkröten-Site neu.
spiders/hearthstone.py
# -*- coding: utf-8 -*-
import scrapy
from ..items import HearthStoneItem
from bs4 import BeautifulSoup
class HearthStoneSpider(scrapy.Spider):
name = "hearth_stone"
allowed_domains = ["4gamer.net"]
start_urls = ['http://www.4gamer.net/games/209/G020915/FC20140702001/']
def parse(self, response):
soup = BeautifulSoup(response.body, "lxml")
for card in soup.find("div", id="UNIT_LIST").findAll("div"):
item = HearthStoneItem()
item['name'] = card.find("span", class_="name").string
item['rarity'] = card.find("span", class_="rarity").string
item['ruby'] = card.find("span", class_="ruby").string
item['type'] = card.find("span", class_="type").string
item['hero'] = card.find("span", class_="class").string
item['race'] = card.find("span", class_="race").string
item['text'] = card.find("span", class_="card_comment").find("p").string
item['mana'] = card.find("span", class_="mana").string
item['attack'] = card.find("span", class_="attack").string
item['health'] = card.find("span", class_="health").string
yield item
Führen Sie den Crawler aus, nachdem Sie zum Schaben bereit sind.
Sie können den Namen der Ausgabedatei mit -o
angeben. (Der Dateityp wird automatisch aus der Erweiterung ermittelt.)
terminal
$ scrapy crawl hearthstone -o hearth_stone.json
Wenn das Crawlen / Scraping erfolgreich ist, wird die folgende Datei erstellt. Es sieht aus wie eine Chiffre, ist aber nur Unicode, also ist es okay.
hearth_stone.json
[
{"attack": "4", "ruby": "Abomination", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "5", "name": "\u6d9c\u308c\u3057\u3082\u306e", "race": "-", "health": "4", "text": "\u6311\u767a\uff06\u65ad\u672b\u9b54\uff1a\u5168\u3066\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u306b2\u30c0\u30e1\u30fc\u30b8\u3092\u4e0e\u3048\u308b\u3002"},
{"attack": "1", "ruby": "Abusive Sergeant", "rarity": "\u30b3\u30e2\u30f3", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "1", "name": "\u9b3c\u8ecd\u66f9", "race": "-", "health": "1", "text": "\u96c4\u53eb\u3073\uff1a\u3053\u306e\u30bf\u30fc\u30f3\u306e\u9593\u3001\u30df\u30cb\u30aa\u30f31\u4f53\u306b\u653b\u6483\u529b\uff0b2\u3092\u4ed8\u4e0e\u3059\u308b\u3002"},
{"attack": "3", "ruby": "Acidic Swamp Ooze", "rarity": "\u30d5\u30ea\u30fc", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "2", "name": "\u9178\u6027\u6cbc\u30a6\u30fc\u30ba", "race": "-", "health": "2", "text": "\u96c4\u53eb\u3073\uff1a\u6575\u306e\u6b66\u5668\u3092\u7834\u58ca\u3059\u308b\u3002"},
{"attack": "4", "ruby": "Acidmaw ", "rarity": "\u30ec\u30b8\u30a7\u30f3\u30c9", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30cf\u30f3\u30bf\u30fc", "mana": "7", "name": "\u30a2\u30b7\u30c3\u30c9\u30e2\u30fc", "race": "\u7363", "health": "2", "text": "\u81ea\u5206\u4ee5\u5916\u306e\u30df\u30cb\u30aa\u30f3\u304c\u30c0\u30e1\u30fc\u30b8\u3092\u53d7\u3051\u308b\u5ea6\u3001\u305d\u306e\u30df\u30cb\u30aa\u30f3\u3092\u7834\u58ca\u3059\u308b\u3002"},
{"attack": "1", "ruby": "Acolyte of Pain", "rarity": "\u30b3\u30e2\u30f3", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "3", "name": "\u82e6\u75db\u306e\u4f8d\u796d", "race": "-", "health": "3", "text": "\u3053\u306e\u30df\u30cb\u30aa\u30f3\u304c\u30c0\u30e1\u30fc\u30b8\u3092\u53d7\u3051\u308b\u5ea6\u3001\u30ab\u30fc\u30c9\u30921\u679a\u5f15\u304f\u3002"},
{"attack": "3", "ruby": "Al'Akir the Windlord", "rarity": "\u30ec\u30b8\u30a7\u30f3\u30c9", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30b7\u30e3\u30fc\u30de\u30f3", "mana": "8", "name": "\u98a8\u306e\u738b\u30a2\u30e9\u30ad\u30a2", "race": "-", "health": "5", "text": "\u75be\u98a8\u3001\u7a81\u6483\u3001\u8056\u306a\u308b\u76fe\u3001\u6311\u767a"},
{"attack": "0", "ruby": "Alarm-o-Bot", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "3", "name": "\u30a2\u30e9\u30fc\u30e0\u30ed\u30dc", "race": "\u30e1\u30ab", "health": "3", "text": "\u81ea\u5206\u306e\u30bf\u30fc\u30f3\u306e\u958b\u59cb\u6642\u3001\u3053\u306e\u30df\u30cb\u30aa\u30f3\u3092\u3001\u81ea\u5206\u306e\u624b\u672d\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u30df\u30cb\u30aa\u30f3\u3068\u5165\u308c\u66ff\u3048\u308b"},
{"attack": "3", "ruby": "Aldor Peacekeeper", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30d1\u30e9\u30c7\u30a3\u30f3", "mana": "3", "name": "\u30a2\u30eb\u30c0\u30fc\u306e\u5e73\u548c\u306e\u756a\u4eba", "race": "-", "health": "3", "text": "\u96c4\u53eb\u3073\uff1a\u6575\u306e\u30df\u30cb\u30aa\u30f31\u4f53\u306e\u653b\u6483\u529b\u30921\u306b\u5909\u3048\u308b\u3002"},
{"attack": "8", "ruby": "Alexstrasza", "rarity": "\u30ec\u30b8\u30a7\u30f3\u30c9", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "9", "name": "\u30a2\u30ec\u30af\u30b9\u30c8\u30e9\u30fc\u30b6", "race": "\u30c9\u30e9\u30b4\u30f3", "health": "8", "text": "\u96c4\u53eb\u3073\uff1a\u30d2\u30fc\u30ed\u30fc1\u4eba\u306e\u6b8b\u308a\u4f53\u529b\u309215\u306b\u3059\u308b\u3002"},
{"attack": "2", "ruby": "Alexstrasza's Champion ", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30a6\u30a9\u30ea\u30a2\u30fc", "mana": "2", "name": "\u30a2\u30ec\u30af\u30b9\u30c8\u30e9\u30fc\u30b6\u306e\u52c7\u8005", "race": "-", "health": "3", "text": "\u96c4\u53eb\u3073\uff1a\u81ea\u5206\u306e\u624b\u672d\u306b\u30c9\u30e9\u30b4\u30f3\u30ab\u30fc\u30c9\u304c\u3042\u308b\u5834\u5408\u3001\u653b\u6483\u529b\uff0b1\u3068\u7a81\u6483\u3092\u5f97\u308b\u3002"},
{"attack": "2", "ruby": "Amani Berserker", "rarity": "\u30b3\u30e2\u30f3", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "2", "name": "\u30a2\u30de\u30cb\u306e\u72c2\u6226\u58eb", "race": "-", "health": "3", "text": "\u6fc0\u6012\uff1a\u653b\u6483\u529b\uff0b3\u3002"},
{"attack": null, "ruby": "Ancestor's Call", "rarity": "\u30a8\u30d4\u30c3\u30af", "type": "\u546a\u6587", "hero": "\u30b7\u30e3\u30fc\u30de\u30f3", "mana": "4", "name": "\u7956\u970a\u306e\u58f0", "race": "-", "health": null, "text": "\u5404\u30d7\u30ec\u30a4\u30e4\u30fc\u306e\u624b\u672d\u304b\u3089\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u30df\u30cb\u30aa\u30f31\u4f53\u3092\u305d\u308c\u305e\u308c\u306e\u9663\u5730\u306b\u8ffd\u52a0\u3059\u308b\u3002"},
{"attack": null, "ruby": "Ancestral Healing", "rarity": "\u30b3\u30e2\u30f3", "type": "\u546a\u6587", "hero": "\u30b7\u30e3\u30fc\u30de\u30f3", "mana": "0", "name": "\u7956\u970a\u306e\u7652\u3057", "race": "-", "health": null, "text": "\u30df\u30cb\u30aa\u30f31\u4f53\u306e\u4f53\u529b\u3092\u4e0a\u9650\u307e\u3067\u56de\u5fa9\u3057\u3001\u6311\u767a\u3092\u4ed8\u4e0e\u3059\u308b\u3002"},
{"attack": null, "ruby": "Ancestral Knowledge ", "rarity": "\u30b3\u30e2\u30f3", "type": "\u546a\u6587", "hero": "\u30b7\u30e3\u30fc\u30de\u30f3", "mana": "2", "name": "\u7956\u970a\u306e\u77e5\u8b58", "race": "-", "health": null, "text": "\u30ab\u30fc\u30c9\u30922\u679a\u5f15\u304f\u3002\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\uff1a (2)"},
{"attack": null, "ruby": "Ancestral Spirit", "rarity": "\u30ec\u30a2", "type": "\u546a\u6587", "hero": "\u30b7\u30e3\u30fc\u30de\u30f3", "mana": "2", "name": "\u7956\u970a\u306e\u5c0e\u304d", "race": "-", "health": null, "text": "\u30df\u30cb\u30aa\u30f31\u4f53\u306b\u3001\u300c\u65ad\u672b\u9b54\uff1a\u3053\u306e\u30df\u30cb\u30aa\u30f3\u3092\u518d\u5ea6\u53ec\u559a\u3059\u308b\u300d\u3092\u4ed8\u4e0e\u3059\u308b\u3002"},
{"attack": "5", "ruby": "Ancient Brewmaster", "rarity": "\u30b3\u30e2\u30f3", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "4", "name": "\u8001\u7df4\u306e\u9152\u9020\u5927\u5e2b", "race": "-", "health": "4", "text": "\u96c4\u53eb\u3073\uff1a\u5473\u65b9\u306e\u30df\u30cb\u30aa\u30f31\u4f53\u3092\u6226\u5834\u304b\u3089\u81ea\u5206\u306e\u624b\u672d\u306b\u623b\u3059\u3002"},
{"attack": "2", "ruby": "Ancient Mage", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "4", "name": "\u8001\u7df4\u306e\u30e1\u30a4\u30b8", "race": "-", "health": "5", "text": "\u96c4\u53eb\u3073\uff1a\u96a3\u63a5\u3059\u308b\u30df\u30cb\u30aa\u30f3\u306b\u3001\u546a\u6587\u30c0\u30e1\u30fc\u30b8\uff0b1\u3092\u4ed8\u4e0e\u3059\u308b\u3002"},
{"attack": "5", "ruby": "Ancient of Lore", "rarity": "\u30a8\u30d4\u30c3\u30af", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30c9\u30eb\u30a4\u30c9", "mana": "7", "name": "\u77e5\u8b58\u306e\u53e4\u4ee3\u6a39", "race": "-", "health": "5", "text": "\u9078\u629e\uff1a\u30ab\u30fc\u30c9\u30921\u679a\u5f15\u304f\u3002\u307e\u305f\u306f\u3001\u4f53\u529b\u30925\u56de\u5fa9\u3059\u308b\u3002"},
{"attack": "5", "ruby": "Ancient of War", "rarity": "\u30a8\u30d4\u30c3\u30af", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30c9\u30eb\u30a4\u30c9", "mana": "7", "name": "\u6226\u306e\u53e4\u4ee3\u6a39", "race": "-", "health": "5", "text": "\u9078\u629e\uff1a\u653b\u6483\u529b\uff0b5\u3002\u307e\u305f\u306f\u3001\u4f53\u529b\uff0b5\u3068\u6311\u767a\u3002"},
{"attack": "4", "ruby": "Ancient Watcher", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "2", "name": "\u53e4\u4ee3\u306e\u756a\u4eba", "race": "-", "health": "5", "text": "\u653b\u6483\u3067\u304d\u306a\u3044\u3002"},
{"attack": "1", "ruby": "Angry Chicken", "rarity": "\u30ec\u30a2", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u4e2d\u7acb", "mana": "1", "name": "\u30a2\u30f3\u30b0\u30ea\u30fc\u30c1\u30ad\u30f3", "race": "\u7363", "health": "1", "text": "\u6fc0\u6012\uff1a\u653b\u6483\u529b\uff0b5\u3002"},
{"attack": "9", "ruby": "Anima Golem", "rarity": "\u30a8\u30d4\u30c3\u30af", "type": "\u30df\u30cb\u30aa\u30f3", "hero": "\u30a6\u30a9\u30fc\u30ed\u30c3\u30af", "mana": "6", "name": "\u30a2\u30cb\u30de\u30fb\u30b4\u30fc\u30ec\u30e0", "race": "\u30e1\u30ab", "health": "9", "text": "\u6bce\u30bf\u30fc\u30f3\u306e\u7d42\u4e86\u6642\u306b\u3001\u3053\u306e\u30df\u30cb\u30aa\u30f3\u304c\u81ea\u5206\u306e\u552f\u4e00\u306e\u30df\u30cb\u30aa\u30f3\u3067\u3042\u308b\u5834\u5408\u3001\u3053\u306e\u30df\u30cb\u30aa\u30f3\u3092\u7834\u58ca\u3059\u308b\u3002"},
#Kürzung
]
Verwenden Sie den erstellten Korpus, um doc2vec zu trainieren und ein Modell zu erstellen. Es wird mit der folgenden Verzeichnisstruktur ausgeführt.
terminal
doc2vec
├── card2vec.py
└── hearth_stone # (Scrapy Project)
├── hearth_stone
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-35.pyc
│ │ ├── items.cpython-35.pyc
│ │ └── settings.cpython-35.pyc
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ ├── __pycache__
│ │ └── __init__.cpython-35.pyc
│ └── hearthstone.py
├── hearth_stone.json
└── scrapy.cfg
Erstellen Sie ein Modell von doc2vec mit dem folgenden Code.
card2vec.py
# -*- coding: utf-8 -*-
import json
import MeCab
from gensim.models import doc2vec
import os
def load_json(target_game_name):
#Erstellen von Eingabedaten für Kartennamen und Kartentext
names = []
text = ""
texts = []
#Geben Sie die Ausgabe von Mecab als Division an
mecab = MeCab.Tagger("-Owakati")
json_path = target_game_name + "/" + target_game_name + ".json"
#Der Text der Karte wird morphologisch analysiert, und die getrennten werden durch Zeilenumbrüche in eine Zeichenfolge getrennt.
with open(json_path, "r") as file:
card_dict = json.load(file)
for card in card_dict:
if card["name"] not in names:
names.append(card["name"])
mecab_result = mecab.parse(card["text"])
if mecab_result is False:
text += "\n"
texts.append("")
else:
text += mecab_result
texts.append(card["text"])
with open(target_game_name + ".txt", "w") as file:
file.write(text)
return names, texts
def generate_doc2vec_model(target_game_name):
print("Training Start")
#Kartentext lesen
card_text = doc2vec.TaggedLineDocument(target_game_name + ".txt")
#Lernen
model = doc2vec.Doc2Vec(card_text, size=300, window=8, min_count=1,
workers=4, iter=400, dbow_words=1, negative=5)
#Modell speichern
model.save(target_game_name + ".model")
print("Training Finish")
return model
if __name__ == '__main__':
TARGET_GAME_NAME = "hearth_stone"
names, texts = load_json(TARGET_GAME_NAME)
if os.path.isfile(TARGET_GAME_NAME + ".model") is True:
model = doc2vec.Doc2Vec.load(TARGET_GAME_NAME + ".model")
else:
model = generate_doc2vec_model(TARGET_GAME_NAME)
card2vec.Fortsetzung von py
#Kartenname, für den Sie eine ähnliche Karte suchen möchten
TARGET_CARD_NAME = "Hogger"
card_index = names.index(TARGET_CARD_NAME)
#Erhalten Sie eine Liste ähnlicher Karten und Ähnlichkeitstafeln (Top 10 Ähnlichkeiten)
similar_docs = model.docvecs.most_similar(card_index)
print(names[card_index])
print(texts[card_index])
print("--------------------is similar to--------------------")
for similar_doc in similar_docs:
print(names[similar_doc[0]] + " " + str(similar_doc[1]))
print(texts[similar_doc[0]], "\n")
Versuchen Sie, eine ähnliche Karte mit dem Kartennamen als Eingabe auszugeben. Dieses Mal gebe ich persönlich meine Lieblingskarte ein.
terminal
$ python card2vec.py
Hogger
Haben Sie am Ende Ihres Zuges eine Provokation 2/Beschwöre 1 Noor von 2.
--------------------is similar to--------------------
Elwins Disaster Hogger 0.9119920134544373
/
.8980860114097595
/
.8811841011047363
Beschwöre 1 Noor von 2. Obsidian-Zerstörer 0 Beschwöre am Ende deines Zuges ein 11 provokatives Scarabe. Beschwöre Stein 0 Wenn du einen Zauber wirkst, beschwöre einen zufälligen Diener mit den gleichen Kosten.
Spiegelbild 0.8686900734901428
0 mit Provokation/Beschwöre 2 Schergen von 2.
Isera 0.8627046346664429
Füge deiner Hand am Ende deines Zuges eine Traumkarte hinzu.
#Kürzung
Eingang | Ausgabe |
---|---|
![]() |
![]() |
Der mit der höchsten Ähnlichkeit zum Eingang "Hogger" war "Elwin's Disaster Hogger". Wie Sie sehen können, ist es interessant, dass dieselbe Hogger-Karte nur mit dem Text ausgegeben wurde. Die 2. und 3. Karte und der Text der Karte sind "Beschwören \ * \ * \ * \ * wenn ~ ~", daher wird sie mit ziemlich hoher Genauigkeit aufgenommen.
terminal
Eisen Jaguar Hinweis
Schrei: Füge 1 "Buried Landmine" zu einer zufälligen Stelle auf dem feindlichen Deck hinzu. "Buried Mine" explodiert beim Ziehen und verursacht 10 Schaden.
--------------------is similar to--------------------
Erdspinne 0.8792235851287842
Füge jeder zufälligen Position auf dem feindlichen Deck 3 "Hinterhalt" -Karten hinzu. Wenn "Hinterhalt" gezogen wird, 4 in Ihrer Position/Beschwöre 1 Nervian von 4.
Elise Star Seeker 0.8761336803436279
Schrei: Füge eine "Karte zum goldenen Affen" an einer zufälligen Stelle auf deinem Deck hinzu.
Zerstörerische Waffe 0.8525710105895996
Füge einem zufälligen Gegner zu Beginn deines Zuges 2 Schadenspunkte zu.
Alter Schatten 0.8471906185150146
Schrei: Füge einen "alten Fluch" zu einer zufälligen Stelle auf deinem Deck hinzu. Wenn Sie den "Alten Fluch" ziehen, erleiden Sie 7 Schadenspunkte.
Schlucht Tyrann Mukura 0.8456800580024719
Schrei: Fügen Sie Ihrer Hand 2 "Bananen" hinzu.
#Kürzung
Eingang | Ausgabe |
---|---|
![]() |
![]() |
Dies hat auch eine solide Funktion wie "Addiere ~ \ * \ * \ * \ * zu zufälligen Positionen auf dem Deck des Feindes. Wenn \ * \ * \ * \ * ~ ~ gezeichnet wird." Ich werde. Oben befinden sich auch "Elise Starseeker" und "Ancient Shade", die Karten an zufälligen Positionen auf dem Deck einlegen.
terminal
Straße Jaluxus
Schrei: Dein Held wird zerstört und Lord Jaluxus wird dein Held.
--------------------is similar to--------------------
Leader Execution 0.8202652335166931
Verzweifelt: Lagunaros, der König des Feuers, wird sein Held.
Befehl 0.8199278712272644
Während dieses Zuges können die Schergen der Verbündeten nicht weniger als 1 erhalten. Ziehe eine Karte.
Elise Star Seeker 0.8164669275283813
Schrei: Füge eine "Karte zum goldenen Affen" an einer zufälligen Stelle auf deinem Deck hinzu.
Tasker's Spear Matcher 0.8136664032936096
Schrei: Zeige einen der Deckschergen jedes Spielers. Wenn dein Diener mehr kostet, heilt dein Held um 7.
Tödliche Ichiya 0.8121815323829651
Zerstöre einen zufälligen feindlichen Diener.
#Kürzung
Eingang | Ausgabe |
---|---|
![]() |
![]() |
"Road Jaluxus" ist eine Karte mit einem seltsamen Effekt, der deinen Helden verändert. Die einzigen Karten, die diesen Effekt haben, sind "Road Jaluxus" und "Executors, the Leading Elder". In diesem Ergebnis ist die Ähnlichkeit zwischen den beiden hoch, so dass gesagt werden kann, dass die Merkmale ziemlich gut aufgenommen sind.
Es stellt sich heraus, dass auch kurze Texte wie Kartentexte wie Hearthstone mit doc2vec erfolgreich vektorisiert werden können. Als Korpus konnte ich mit nur 922 Blatt viel Genauigkeit erzielen. In Bezug auf die Parameter von Doc2Vec habe ich auf das in den Referenzen gezeigte Papier verwiesen. Nebenbei habe ich es mit Yugiohs Karte versucht, aber ich wusste nicht, ob es ähnlich war, weil ich mit Yugioh nicht vertraut war, also hörte ich auf. Ich werde die Quelle und das Modell auf Github hochladen. Wenn Sie interessiert sind, versuchen Sie es bitte. https://github.com/GuiltyMorishita/card2vec
Distributed Representations of Sentences and Documents An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation
Recommended Posts