[PYTHON] [PowerShell] Lesen Sie die Zeichenfolge

Was wurde gemacht

> "Natto (nicht gentechnisch verändert)"|Get-ReadingWithSudachi|fl

Line     :Natto (nicht gentechnisch verändert)
Reading  :Natto (Idenshikumakaedenai)
Tokenize :Natto(Natto)/(/Gen(Idenshi)/Rekombinant(Kumikae)/damit/Abwesend/)
Markup   : <p><ruby>Natto<rt>Natto</rt></ruby>(<ruby>Gen<rt>Idenshi</rt></ruby>
           <ruby>Rekombinant<rt>Kumikae</rt></ruby>Nicht)</p>

Code

Umgebung:

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.0.3
PSEdition                      Core
GitCommitId                    7.0.3
OS                             Microsoft Windows 10.0.18362
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Nennen Sie die morphologische Analyse in SudachiPy, die ich zuvor geschrieben habe (PowerShell-morphologische Analyse in SudachiPy) (https://qiita.com/AWtnb/items/eb778aba1cc2e335e581).

function Get-ReadingWithSudachi {
    param (
        [switch]$readingOnly,
        [switch]$ignoreParen
    )
    $ret = New-Object System.Collections.ArrayList
    $tokenizedResults = $input | Invoke-SudachiTokenizer -ignoreParen:$ignoreParen
    foreach ($result in $tokenizedResults) {
        $reading = New-Object System.Text.StringBuilder
        $tokenize = New-Object System.Collections.ArrayList
        $markup = New-Object System.Collections.ArrayList

        foreach ($token in $result.parsed) {

            $tokenSurface = $token.surface
            if ($token.pos -match "Symbol|Leer" -or $tokenSurface -match "^([EIN-Vu]|[a-zA-Za-zA-Z]|[0-90-9]|[\W\s])+$") {
                $tokenReading = $tokenSurface
                $tokenInfo = $tokenSurface
                $tokenMarkup = $tokenSurface
            }
            elseif (-not $token.reading) {
                $tokenReading = $tokenSurface
                $tokenInfo = "$($tokenSurface)(?)"
                $tokenMarkup = $tokenSurface
            }
            else {
                $tokenReading = $token.reading
                $tokenInfo = ($tokenSurface -match "^[Ah-Hmm]+$")?
                    $tokenSurface :
                    "$($tokenSurface)($tokenReading)"
                $tokenMarkup = ($tokenSurface -match "^[Ah-Hmm]+$")?
                    $tokenSurface :
                    "<ruby>{0}<rt>{1}</rt></ruby>" -f $tokenSurface, $tokenReading
            }
            $reading.Append($tokenReading) > $null
            $tokenize.Add($tokenInfo) > $null
            $markup.Add($tokenMarkup) > $null
        }

        $ret.Add([PSCustomObject]@{
            Line = $result.line
            Reading = $reading.ToString()
            Tokenize = $tokenize -join "/"
            Markup = "<p>{0}</p>" -f ($markup -join "")
        }) > $null

    }

    return ($readingOnly)? $ret.reading : $ret
}

HTML-Markup

202009192183358.png

Manchmal kann ich solche Fachbegriffe nicht analysieren.

Sie können ein oder zwei visuell überprüfen, aber da es ein Problem wäre, Hunderte von Zeilen zu verarbeiten, habe ich eine Eigenschaft namens "Markup" hinzugefügt, um HTML-Markup auszuspucken.

(cat hogehoge.txt |Get-ReadingWithSudachi).markup|Out-File hogehoge.html

202009192184427.png

Ich glaube, wenn Sie es wie oben beschrieben in HTML konvertieren und mit einem Browser überprüfen, werden Versehen bis zu einem gewissen Grad reduziert.

Recommended Posts

[PowerShell] Lesen Sie die Zeichenfolge
[Python] Ruft den Zeichencode der Datei ab
Holen Sie sich die Anzahl der Ziffern
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Holen Sie sich die Anzahl der Ansichten von Qiita
Ruft die Attribute eines Objekts ab
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Lassen Sie die Stückliste am Anfang der Zeichenfolge weg
Erhalten Sie Parlamentsprotokolle über API
[Pandas] Erweitern Sie die Zeichenfolgen zu DataFrame
Grundlegende Grammatik der Python3-Reihe (Zeichenkette)
Ermitteln Sie den Wert der mittleren Schicht von NN
Holen Sie sich den letzten Tag des angegebenen Monats
Holen Sie sich den Dateinamen des Verzeichnisses (glob)
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Holen Sie sich den Aufrufer einer Funktion in Python
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
Teilen Sie die Zeichenfolge in die angegebene Anzahl von Zeichen
Zeichenbereich / Zeichenfolgenbereich
Die Geschichte des Lesens von HSPICE-Daten in Python
Holen Sie sich nur den Adressteil der Netzwerkkarte (eth0)
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
[Ansible] Beispiel für ein Playbook, das der ersten Zeile der Datei eine Zeichenkette hinzufügt
Holen Sie sich den Titel der Yahoo News und analysieren Sie die Stimmung
[Python] Ruft den offiziellen Dateipfad der Verknüpfungsdatei ab (.lnk)
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Holen Sie sich das Bild von "Suzu Hirose" von Google Bildersuche.
Holen Sie sich den absoluten Pfad des laufenden Skripts
Speichern Sie Japanisch (Multibyte-Zeichenfolge) in sqlite3 von Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Da es viele Erdbeben gibt, erfahren Sie mehr über die Geschichte des Erdbebens
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
[Python] Ermittelt die Anzahl der Aufrufe aller veröffentlichten Artikel
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Der Beginn von cif2cell
Verschiedene Zeichenkettenoperationen
Holen Sie sich die GNOME-Version
Die Bedeutung des Selbst
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Die Geschichte von sys.path.append ()
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Zusammenfassung der Zeichenfolgenoperationen