Bis zum 18. August 2020 gab es keinen Artikel, in dem ich versucht habe, den SIF-Rang auf japanische Dokumente anzuwenden. Daher werde ich ihn bis zu dem Punkt aufschreiben, an dem ich tatsächlich Schlüsselphrasen extrahiere. Ich denke, es gibt einige Ecken und Kanten, daher würde ich es begrüßen, wenn Sie darauf hinweisen könnten.
Das Papier, das den SIF-Rang vorgeschlagen hat, und das ursprüngliche Repository sind hier. • SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-trained Language Model • sunyilgdx/SIFRank
Der diesmal verwendete Code wird im folgenden Repository gespeichert. • tanajp/SIFRank_ja_model
• Google Colaboratory • Python 3.6.9 • allennlp 0.8.4 • nltk 3.4.3 • torch 1.2.0 • stanza 1.0.0
Klonen Sie zunächst das vorhandene Repository hier. Laden Sie dann die japanische Version von ELMo von der Website AllenNLP herunter und platzieren Sie sie unter auxiliary_data im Ordner SIF Rank_ja_model. (Hier können Sie nur Gewichte herunterladen.)
Dieses Mal legen wir einen Ordner unter "Mein Laufwerk" ab und fahren fort. Platzieren Sie den zuvor geklonten Ordner unter "Mein Laufwerk" in Google Drive. Wählen Sie als Nächstes für die Einstellung von Google Colab "Laufzeittyp ändern" unter "Laufzeit" oben links aus, um die GPU zu ändern. Wählen Sie es aus und speichern Sie es.
from google.colab import drive
drive.mount('/content/drive')
Wenn die Ausgabe wie folgt ist, ist sie erfolgreich.
Enter your authorization code:
··········
Mounted at /content/drive
Installieren Sie die erforderlichen Bibliotheken.
!pip install -r '/content/drive/My Drive/SIFRank_ja_model/requirements.txt'
Laden Sie wordnet und das japanische Strophenmodell herunter.
import nltk
import stanza
nltk.download('wordnet')
stanza.download('ja')
test.py
import sys
sys.path.append('/content/drive/My Drive/SIFRank_ja_model')
sys.path.append('/content/drive/My Drive/SIFRank_ja_model/embeddings')
import stanza
import sent_emb_sif, word_emb_elmo
from model.method import SIFRank, SIFRank_plus
#download from https://allennlp.org/elmo
options_file = "https://exawizardsallenlp.blob.core.windows.net/data/options.json"
weight_file = "/content/drive/My Drive/SIFRank_ja_model/auxiliary_data/weights.hdf5"
ELMO = word_emb_elmo.WordEmbeddings(options_file, weight_file, cuda_device=0)
SIF = sent_emb_sif.SentEmbeddings(ELMO, lamda=1.0)
ja_model = stanza.Pipeline(
lang="ja", processors={}, use_gpu=True
)
elmo_layers_weight = [0.0, 1.0, 0.0]
text = "Bitte geben Sie hier den Text ein."
keyphrases = SIFRank(text, SIF, ja_model, N=5,elmo_layers_weight=elmo_layers_weight)
keyphrases_ = SIFRank_plus(text, SIF, ja_model, N=5, elmo_layers_weight=elmo_layers_weight)
print(keyphrases)
print(keyphrases_)
Als Beispiel [ANA, 500 Milliarden Yen Kapitalbeschaffungsgespräche - Wiki News](https://ja.wikinews.org/wiki/ANA%E3%80%815000%E5%84%84%E5%86%86 % E8% A6% 8F% E6% A8% A1% E3% 81% AE% E8% B3% 87% E6% 9C% AC% E8% AA% BF% E9% 81% 94% E5% 8D% 94% E8 Ich habe versucht, die Schlüsselphrase durch Eingabe des Textes von% AD% B0) zu extrahieren.
2020-08-17 17:21:13 INFO: Loading these models for language: ja (Japanese):
=======================
| Processor | Package |
-----------------------
| tokenize | gsd |
| pos | gsd |
| lemma | gsd |
| depparse | gsd |
=======================
2020-08-17 17:21:13 INFO: Use device: gpu
2020-08-17 17:21:13 INFO: Loading: tokenize
2020-08-17 17:21:13 INFO: Loading: pos
2020-08-17 17:21:14 INFO: Loading: lemma
2020-08-17 17:21:14 INFO: Loading: depparse
2020-08-17 17:21:15 INFO: Done loading processors!
(['Japan Policy Investment Bank', 'Kapitalbeschaffung', 'ana Holdings', 'Darlehen', 'Privates Finanzinstitut'], [0.8466373488741734, 0.8303728302151282, 0.7858931046897192, 0.7837600983935882, 0.7821878670623081])
(['Japan Policy Investment Bank', 'Nihon Keizai Shimbun', 'Alle Japan Air Transport', 'Kapitalbeschaffung', 'ana Holdings'], [0.8480482653338678, 0.8232344465718657, 0.8218706097094447, 0.8100789955114978, 0.8053839380458278])
Dies ist das Ergebnis des Extrahierens mit N = 5. Die endgültige Ausgabe sind die Schlüsselphrasen und ihre Punktzahlen. Das obere ist das Ausgabeergebnis von SIF Rank und das untere ist das Ausgabeergebnis von SIF Rank +. Da es sich um einen Artikel handelt, in dem ANA mit der Japan Policy Investment Bank und privaten Finanzinstituten Gespräche über die Finanzierung aufgenommen hat, scheint die Extraktion von Schlüsselphrasen erfolgreich zu sein.
Übrigens beziehen sich Tokenize, Pos, Lemma und Depparse auf Tokenisierung, POS-Tag-Zuweisung, Headword-Konvertierung und Analyse der Abhängigkeitsstruktur und werden derzeit per Zeilengruppe verarbeitet.
Ich habe den SIF-Rang auf japanische Dokumente anwendbar gemacht und ihn tatsächlich verwendet. Der Parser kann alles sein, was ein japanisches Versionsmodell hat, aber diesmal habe ich eine Zeilengruppe verwendet. Darüber hinaus verwendet das japanische Stoppwortwörterbuch Slothlib. .. Sie können die Stoppwörter bearbeiten, indem Sie japanese_stopwords.txt unter auxiliary_data im Ordner SIFRank_ja_model neu schreiben.
• SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-trained Language Model • sunyilgdx/SIFRank • AllenNLP • Einführung des ELMo-Modells (unter Verwendung von MeCab), mit dem umfangreiche japanische Wirtschaftsnachrichten gelernt wurden • Überprüfung des Verwendungs- und Genauigkeitsvergleichs des ELMo-Modells (unter Verwendung von MeCab), mit dem ein umfangreiches japanisches Korpus von Wirtschaftsnachrichten gelernt wurde • Gelernte ELMo mit AllenNLP-Rittanzu laden! - • Slothlib