Au 18 août 2020, il n'y avait aucun article dans lequel j'essayais d'appliquer le classement SIF aux documents japonais, je vais donc l'écrire au point où j'extrais effectivement des phrases clés. Je pense qu'il y a des aspérités, alors j'apprécierais que vous le signaliez.
Le document qui proposait le classement SIF et le référentiel original sont ici. • SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-trained Language Model • sunyilgdx/SIFRank
Le code utilisé cette fois est stocké dans le référentiel suivant. • 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
Tout d'abord, clonez le référentiel here disponible. Ensuite, téléchargez la version japonaise d'ELMo à partir du site AllenNLP et placez-la sous auxiliaire_data dans le dossier SIF Rank_ja_model. (Ici, vous ne pouvez télécharger que des poids.)
Cette fois, nous placerons un dossier sous Mon Drive et continuerons. Placez le dossier que vous avez cloné précédemment sous Mon Drive sur Google Drive. Ensuite, pour le paramètre de Google Colab, sélectionnez «Modifier le type d'exécution» dans «Runtime» en haut à gauche pour modifier le GPU. Sélectionnez-le et enregistrez-le.
from google.colab import drive
drive.mount('/content/drive')
Si la sortie est la suivante, elle réussit.
Enter your authorization code:
··········
Mounted at /content/drive
Installez les bibliothèques requises.
!pip install -r '/content/drive/My Drive/SIFRank_ja_model/requirements.txt'
Téléchargez wordnet et le modèle japonais de strophe.
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 = "Veuillez saisir le texte ici."
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_)
A titre d'exemple, [ANA, 500 milliards de yens sur la levée de capitaux pourparlers-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 J'ai essayé d'extraire la phrase clé en saisissant le texte de% AD% B0).
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!
(['Banque japonaise d'investissement politique', 'Levée de capitaux', 'ana Holdings', 'Prêt', 'Institution financière privée'], [0.8466373488741734, 0.8303728302151282, 0.7858931046897192, 0.7837600983935882, 0.7821878670623081])
(['Banque japonaise d'investissement politique', 'Nihon Keizai Shimbun', 'Tout le transport aérien au Japon', 'Levée de capitaux', 'ana Holdings'], [0.8480482653338678, 0.8232344465718657, 0.8218706097094447, 0.8100789955114978, 0.8053839380458278])
C'est le résultat de l'extraction avec N = 5. Le résultat final est les phrases clés et leurs scores. Le haut est le résultat de sortie de SIF Rank et le bas est le résultat de sortie de SIF Rank +. Comme c'est un article que l'ANA a entamé des discussions sur le financement avec la Japan Policy Investment Bank et des institutions financières privées, il semble que l'extraction de phrases clés soit réussie.
À propos, tokenize, pos, lemma et depparse font respectivement référence à la tokenisation, à l'affectation des balises POS, à la conversion des mots clés et à l'analyse de la structure des dépendances, et sont en cours de traitement en pipeline par strophe.
J'ai rendu le classement SIF applicable aux documents japonais et je l'ai effectivement utilisé. L'analyseur peut être tout ce qui a un modèle japonais, mais cette fois j'ai utilisé la strophe. De plus, le dictionnaire de mots vides japonais utilise Slothlib. .. Vous pouvez modifier les mots vides en réécrivant japanese_stopwords.txt sous auxiliaire_data dans le dossier SIFRank_ja_model.
• SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-trained Language Model • sunyilgdx/SIFRank • AllenNLP • Introduction du modèle ELMo (utilisant MeCab) qui a appris le corpus d'actualités japonaises à grande échelle • Vérification par comparaison de l'utilisation et de la précision du modèle ELMo (utilisant MeCab) qui a appris le corpus d'actualités commerciales japonais à grande échelle • Charger ELMo appris avec AllenNLP-Rittanzu! - • Slothlib
Recommended Posts