[PYTHON] Versuchen Sie, die in COTOHA beliebten Schlüsselwörter zu extrahieren

Vorgeschriebenes Antragsverfahren

COTOHA API Portal

Vielen Dank. Ich möchte ein iPad. Es ist ein Story-Artikel, denn es heißt, wenn Sie einen Story-Artikel mit COTOHA schreiben, erhalten Sie ein iPad (es gibt ein schlechtes Wort).

Was hast du gemacht

Diejenigen, die nur den Code sehen wollen

Ich habe es in [github] 4 eingefügt, also schauen Sie bitte. Nur die Benutzerinformationen, die für den Zugriff auf COTOHA erforderlich sind, sind Dummy-Informationen. Überschreiben Sie diese daher bitte mit Ihren eigenen Informationen.

Überblick über das, was ich gemacht habe

Die Schlussfolgerung ist die sprachliche Analyse des Titels und der Zusammenfassung von [Werden Sie ein Romanautor] 2.

[Romanautor werden] 2 ist eine Website für Web-Romane. Ein Roman ist auch eine Kreation, aber ich denke, er hat auch einen spielerischen Aspekt, wie man Zugang erhält. Wenn es eine trendige Geschichte gibt, machen Sie sich daran und erhalten Sie Zugang zu Werken, die zum Zähler werden. In gewisser Weise gibt es eine Kultur in der Nähe von Ogiri auf Twitter.

Der Hauptpunkt dieses Artikels ist es also, dieses Spiel mit Sprachanalyse zu hacken. Mit Blick auf [COTOHA API Portal] 1 habe ich mir eine Keyword-Extraktion und eine Ähnlichkeitsberechnung ausgedacht.

  1. Können Sie beliebte Keywords aus dem Titel und der Zusammenfassung extrahieren?
  2. Gibt es einen Zusammenhang zwischen der Ähnlichkeit zwischen Titel und Inhaltsangabe und der Popularität?

1 scheint möglich zu sein, aber wenn ich auch 2 schreibe, ist es ein Teil, der nüchtern ist. In letzter Zeit ist der Titel oft im Satzformat, daher der Titel ≒ Synopse. Ist das in Ordnung oder ist es besser, Informationen einzugeben, die sich vom Titel unterscheiden? Ich bin neugierig.

wie hast du es gemacht?

Naro Novel API

Der Titel und die Inhaltsangabe verwenden [Narurou Novel API] 3. Es ist eine API, die die Gliederungsinformationen des offiziellen Naro-Romans abrufen kann.

Wenn Sie die genauen Informationen wissen möchten, lesen Sie bitte [Dokument] 3. Wenn Sie mit GET eine Abfrage an die folgende URL anhängen und diese auslösen, Es ist eine einfache API, die einen Überblick über den Roman gibt, der gefangen wurde.

https://api.syosetu.com/novelapi/api/

Eigentlich wollte ich die ersten 10 Folgen in die Analyse einbeziehen, aber die offizielle API offenbart die Textinformationen nicht. Einige Websites haben die Benutzeroberfläche durch Abrufen von Daten verfeinert Ich glaube, mir hat die Auslastung des Servers deswegen nicht gefallen. Es ist moralisch, etwas zu tun, das nicht offiziell ist, selbst wenn man kratzt, also habe ich damit aufgehört.

https://api.syosetu.com/novelapi/api/?out=json&lim=50&order=dailypoint

Wenn Sie beispielsweise mit json die 50 besten Elemente im täglichen Ranking erhalten möchten, sieht es so aus. Es tut mir leid, dass ich den Server jedes Mal während des Tests belasten muss Sobald Sie dieses Tool erhalten haben, speichern Sie es lokal und verwenden es erneut. Der Code sieht übrigens so aus.

url = 'https://api.syosetu.com/novelapi/api/'
param = {
    'out': 'json',
    'lim': '50',
    'order': 'dailypoint',
}
url_format = '{}?{}'.format(url, urllib.parse.urlencode(param))
res = requests.get(url=url_format)

Zunächst wird die Anzahl der Ausgaben des Romans mit der Bezeichnung all count zurückgegeben Es ist ein kleiner Mist, aber Sie müssen alle Zählungen vermeiden, wenn Sie für verwenden.

narou_datas = res.json()
for data in narou_datas:
    if 'title' in data:
        title = data['title']
        story = data['story']
        daily_point = data['daily_point'],

COTOHA API [COTOHA API Portal] 1 scheint bei der Verwendung einen zweistufigen Prozess zu erfordern.

  1. Werfen Sie Ihre Anmeldeinformationen und erhalten Sie ein Zugriffstoken
  2. Verwenden Sie die API mit einem Zugriffstoken im Header

1. Werfen Sie Ihre Anmeldeinformationen und erhalten Sie ein Zugriffstoken

url = 'https://api.ce-cotoha.com/v1/oauth/accesstokens'
header = {
    'Content-Type':'application/json'
}
param = {
    'grantType': 'client_credentials',
    'clientId': conf['clientId'],
    'clientSecret': conf['clientSecret'],
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
access_token = res['access_token']

2. Verwenden Sie die API mit einem Zugriffstoken im Header

Schlüsselwortextraktion

url = 'https://api.ce-cotoha.com/api/dev/nlp/v1/keyword'
header = {
    'Content-Type' : 'application/json;charset=UTF-8',
    'Authorization' :  f"Bearer {access_token}",
}
param = {
    'document': title,
    'type' : 'kuzure',
    'max_keyword_num' : 10,
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
result = res['result']

Ähnlichkeitsberechnung

url = 'https://api.ce-cotoha.com/api/dev/nlp/v1/similarity'
header = {
    'Content-Type' : 'application/json;charset=UTF-8',
    'Authorization' :  f"Bearer {access_token}",
}
param = {
    's1': title,
    's2': story,
    'type' : 'kuzure',
}
res = requests.post(url=url, headers=header, data=json.dumps(param))
result = res['result']

Ergebnis ist?

1. Können Sie beliebte Keywords aus dem Titel und der Zusammenfassung extrahieren?

Dies war weitgehend erfolgreich. Es scheint, dass die Top 50 Fälle nicht unerwartet voreingenommen sind, Zum Beispiel scheint es, dass der Grad der Epidemie gemessen werden kann, indem sie regelmäßig durchgeführt wird und die Tendenz zur Zunahme oder Abnahme zeigt.

Wenn Sie die Hauptergebnisse aus den Top-100-Ergebnissen extrahieren, "Geschicklichkeit" "Kindheitsfreund" "Vertreibung" "Andere Welt" "Musou" "Stärkste" "Isolierung" "Böse Tochter" Ist es nicht eine Aufstellung, die allgemein überzeugt?

Beim visuellen Vergleich gab es meistens einige Schlüsselwörter, die korrigiert werden sollten.

Enthält die allgemeine Nomenklatur

Gängige Nomenklaturen wie "Mann", "Er" und "Sie" werden als Schlüsselwörter verwendet. Da es sich um Informationen handelt, die durch die ursprüngliche Bedeutung eines Schlüsselworts zu Rauschen werden, Es scheint notwendig, eine Ausschlussliste zu erstellen und so weiter.

Komplexe Nomenklatur

Beispielsweise wurde "stärkste langsame Lebensdauer" als ein Schlüsselwort gezählt. Wenn möglich, zählen Sie dies als zwei Schlüsselwörter, "stärkste" und "langsame Lebensdauer". Wenn sich die Nomenklaturen überschneiden, scheinen sie eher als ein Wort gezählt zu werden. Zum Beispiel ist "Reinkarnation in einer anderen Welt" eine komplexe Nomenklatur, aber ich möchte, dass es ein Wort ist. Allzweckmaßnahmen scheinen recht schwierig zu sein.

Implizites Verständnis

Ich denke, es wäre nicht seltsam für verschiedene Welten und Bösewichtstöchter, mehr überwältigende Zahlen zu haben. Da diese ihre eigenen Einstellungselemente und Kategorien haben, scheinen sie nicht einfach im Titel oder in der Zusammenfassung beschrieben zu werden. Es scheint, dass Tags usw. separat gewichtet und dann auf komplexe Weise verarbeitet werden müssen.

2. Gibt es einen Zusammenhang zwischen der Ähnlichkeit zwischen Titel und Inhaltsangabe und der Popularität?

Es ist schmerzhaft zu sagen, ohne ein klares Diagramm zu erstellen, aber ich schien nicht viel Korrelation zu finden.

Wenn Sie dem Trend folgen,

"title": "Kenseis Freund aus Kindertagen hat mich mit Machtschikanen hart getroffen, also habe ich beschlossen, zu isolieren und wieder an der Grenze zu beginnen." "daily_point": 5468, "score": 0.9695894

Titel im Satzformat, wie sie mit hoher Ähnlichkeit berechnet werden,

"title": "Different World Cooking Road", "daily_point": 574, "score": 0.44519746

Altmodische Nomenklaturtitel, wie sie berechnet werden, weisen eine geringe Ähnlichkeit auf.

Wenn Sie sich die Verteilung der Punktzahlen ansehen, gibt es viele Zahlen mit hoher Ähnlichkeit Es scheint wahr zu sein, dass es viele Titel im Satzstil gibt, die ein sogenanntes leichtes Romangefühl haben. Allein damit weiß ich jedoch nicht, ob es sich um ein Satzformat handelt, so dass es viele in der Spitze gibt, oder einfach, weil es beliebt ist und nur viele Menschen leben.

Um Korrekturen vorzunehmen, wird die Ähnlichkeit für die Ergebnisse nach Buchungsdatum und -zeit sortiert und mit dem Koeffizienten verglichen. Wenn es dieser Ähnlichkeitsverteilung ähnlich ist, spiegelt es einfach die Bevölkerung wider. Wenn das Verhältnis der Satzformate in dieser Verteilung gering ist, scheinen die Satzformate eine starke Lesefähigkeit zu haben.

Die Ähnlichkeitsberechnung war jedoch ursprünglich eine Übersicht darüber, welche Art von Zusammenfassung beliebt sein würde. Nachdem ich zusätzliche Nachforschungen angestellt hatte, konnte ich keine Schlussfolgerung darüber ziehen, was mit der Inhaltsangabe zu tun ist, und endete hier. (Die Frage, wie der Titel lauten soll, hat persönlich eine niedrige Priorität.)

Eindrücke von der Verwendung

Einfach zu bedienen, aber schwer zu erkennende Fehler

Weil es mit dem oben aufgeführten Testcode funktioniert. Es ist sehr leicht. Jeder, der Curl treffen kann, kann es in Sekundenschnelle verwenden, daher scheint es recht einfach zu sein.

Andererseits ist es schwierig, die Antwort zu verstehen, wenn ein Fehler auftritt. Mit dem Zugriffstoken stimmt etwas nicht, es sind zu viele Zeichen vorhanden. Ich erhalte aus einem anderen Grund eine Fehlermeldung. Der Status der Antwort und die Granularität der Nachricht sind also ziemlich grob Von dort aus war es ziemlich schwierig, die Ursache zu identifizieren.

Es scheint, dass die Verwendung durch die Kombination mit anderen APIs erweitert wird

Wie einige Leute es benutzt haben, um den Aozora Bunko zusammenzufassen, Ich dachte, dass es seinen wahren Wert zeigen würde, wenn es in Kombination mit anderen Diensten verwendet wird.

Zum Beispiel durch Kombinieren von Spracherkennung und Benutzerattributschätzung, Es scheint, dass die Eigenschaften von Menschen, die sich in einem bestimmten Raum aufhalten, automatisch erfasst werden können. Installieren Sie es in einem Restaurant, schätzen Sie die Eigenschaften des Kunden, Dieser Bereich erhöht den Bestand an höheren Menüs usw. (Es sieht so aus, als würde es aufgrund von Datenschutzproblemen brennen.)

Fazit

Ich möchte ein iPad.

Recommended Posts

Versuchen Sie, die in COTOHA beliebten Schlüsselwörter zu extrahieren
Probieren Sie Cython in kürzester Zeit aus
Versuchen Sie, die in Firefox gespeicherten Anmeldedaten zu entschlüsseln
[Jinja2] Lösung für das Problem, dass die in der for-Anweisung hinzugefügten Variablen nicht vererbt werden
[Django] Lassen Sie uns versuchen, den Teil von Django zu klären, der im Test irgendwie durch war
Eine Lösung für das Problem, dass Dateien mit [und] nicht in glob.glob () aufgeführt sind
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
So überprüfen Sie, ob sich der angegebene Schlüssel im angegebenen Bucket in Boto 3 befindet
Extrahieren Sie den Index der ursprünglichen Mengenliste, der der Liste der Teilmengen entspricht.
Reguläre Ausdrücke, die in Python leicht und solide zu erlernen sind
Laden Sie Pakete, die sich nicht in Conda befinden, auf anaconda.org hoch und verwalten Sie sie
So definieren Sie Objekte, die häufig in View verwendet werden, intelligent
Versuchen Sie, die kumulierte Rendite des Rollovers im Futures-Handel zu modellieren
Schreiben Sie ein Programm, das das Programm missbraucht und 100 E-Mails sendet
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen 5-3
Programmierung für den Kampf in der Welt - Kapitel 4
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, das Thema Pelican vorzustellen
Versuchen Sie, Daten in MongoDB abzulegen
Der schnellste Weg, EfficientNet auszuprobieren
Programmieren, um in der Welt zu kämpfen ~ 5-2
Der einfachste Weg, PyQtGraph auszuprobieren
Ich habe versucht, die Methoden zusammenzufassen, die häufig bei der grundlegenden Algo-Implementierung in Quantx Factory verwendet werden
Memorandum Regulärer Ausdruck Wenn die Zeichenfolge mehrere Zeichen enthält, die Sie trennen möchten
Heroku-Bereitstellung der ersten Django-App, von der Anfänger abhängig sind
Verwenden Sie Funktionen, die auf der Benutzeroberfläche in Slack nicht mehr sichtbar sind
So kratzen Sie Seiten, denen in Selenium + Headless Chrome "Zugriff verweigert" wurde
Versuchen Sie, sich mit Python bei qiita anzumelden
Versuchen Sie es mit der Wunderlist-API in Python
[Python] Extrahiere △△ mit maximalem ○○ mit Pandas
Versuchen Sie, die Kraken-API mit Python zu verwenden
Versuchen Sie, das HL-Band der Reihe nach zu verwenden
Versuchen Sie, sich der Teilsumme zu stellen
Versuchen Sie, NumPys add.at mit Julia zu reproduzieren
So extrahieren Sie einen Polygonbereich in Python
Fügen Sie in Jupyter IPerl zum Kernel hinzu.
Ich habe versucht, die COTOHA-API zu berühren
10 Python-Fehler, die Anfängern häufig sind
Python Amateur versucht die Liste zusammenzufassen ①
Probieren Sie die neue Scheduler-Verkettung in PyTorch 1.4 aus
Verschiedene Kommentare im Programm zu schreiben
[Hinweis] Begriffe, die schwer zu merken sind
Versuchen Sie, die Spotify-API in Django zu aktivieren.
Ich möchte visualisieren, wo und wie viele Leute in der Fabrik sind
Sammlung von Numpy, Pandas Tipps, die häufig auf dem Feld verwendet werden
Behandeln Sie CSV mit dem Element, das Sie im Namen der Datei analysieren möchten
Versuchen Sie, Pfeffer ein externes Modul hinzuzufügen. Vorerst in Anfragen.
Ich habe versucht, die Operationen zusammenzufassen, die wahrscheinlich mit numpy-stl verwendet werden
Versuchen Sie, die Fibonacci-Sequenz im Namen der Algorithmuspraxis in verschiedenen Sprachen anzuzeigen
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
Lösung für das Problem, das Sie nicht aktivieren können, indem Sie conda in pyenv setzen
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft