Wie kann ich mit Python NLTK Kollokationen zwischen einzelnen Zeichen identifizieren?

8

Ich möchte NLTK verwenden, um Kollokationen zwischen bestimmten Kanji-Zeichen in Japanisch und Hanzi-Zeichen auf Chinesisch zu identifizieren. Wie bei Wortkollokationen sind einige Sequenzen chinesischer Zeichen weitaus wahrscheinlicher als andere. Beispiel: Viele Wörter in Chinesisch und Japanisch sind Zwei-Zeichen-Bigramme - Zeichen A und Zeichen B (z. B. 日本 = Japan, ni-hon auf Japanisch und ri-ben auf Chinesisch) ). Bei gegebenem Zeichen A (日) ist es viel wahrscheinlicher, dass 本 als Zeichen B angezeigt wird. Die Zeichen 日 und 本 sind also Kollokationen.

Ich möchte NLTK verwenden, um Antworten auf diese Fragen zu finden:

(1) Bei gegebenem Zeichen A, welche Zeichen sind am ehesten Zeichen B?

(2) Gibt es bei Buchstabe B die Frage, welche Zeichen am ehesten Zeichen A sind?

(3) Wie wahrscheinlich sind Buchstabe A und Buchstabe B zusammen in einem Satz, auch wenn sie nicht nebeneinander erscheinen?

In Verbindung damit: Wenn ich eine Häufigkeitsliste von Kanji / Hanzi habe, kann ich das NLTK-Kollokationsmodul zwingen, nur die Beziehungen zwischen den Kanji / Hanzi in meiner Liste zu untersuchen und alle anderen Zeichen zu ignorieren? Dies würde Ergebnisse herausfiltern, in denen einzelne römische Buchstaben (a, b, c usw.) oder Interpunktionszeichen in der Menge möglicher Kollokationen berücksichtigt werden.

Leider die Dokumentation , , und Quelle code für nltk.collocations und das NLTK-Buch diskutieren nur Englisch-NLP und verständlicherweise nicht adressieren Sie die Frage der Einzelzeichen-Kollokationen. Funktionen im Modul nltk.collocations scheinen einen eingebauten Wort-Tokenizer zu haben, daher denke ich, dass sie standardmäßig einzelne Zeichen ignorieren.

UPDATE: Der folgende Code scheint auf der richtigen Spur zu sein:

%Vor%

Ergebnisse:

%Vor%

Aus irgendeinem Grund scheint BigramCollocationFinder die einzelnen Zeichen in meinem japanischen Beispieltext als Kandidaten für Bigramm-Kollokationen zu behandeln. Ich bin mir immer noch nicht sicher, wie ich aus diesem Ergebnis den nächsten Schritt machen soll, um die oben gestellten Fragen zu beantworten.

    
WordBrewery 23.04.2017, 20:28
quelle

1 Antwort

4

Die meisten wahrscheinlich sind Sie nicht mit dem Grame Teil der Aufgabe stecken, sondern, wie die Daten zu reinigen, so dass Sie Kanji Worte aus dem Chaos von anderen Zeichen zu bekommen.

Hier ist ein Hack, aber es wird erfordert die charguana Bibliothek:

%Vor%

[in]:

  

荒 川 支流 で あ る 滝 川 の 支流 と な っ て い る. 流 路 延長 は 5,0 キ ロ メ ー ト ル, 流域 面積 は 9.8 平方 キ ロ メ ー ト ル で あ る. 流域 は 全 て 山地 に 属 し て い る. 奥 秩 父 を 代表 す る 沢 登 り ス ポ ッ ト と な っ て い る. 流 路 に は ホ チ の 滝 · ト オ の 滝 の ほ か, 鍾乳 洞 「瀧 谷 洞」 が あ る. 昭和 初期 に は 原 全 教 が 「奥 秩 父」 に 豆 焼 川 の 紀行文 を 残 し て い る.

[out]:

%Vor%     
alvas 27.04.2017 10:01
quelle

Tags und Links