[PYTHON] [PowerShell] Obtenez la lecture de la chaîne de caractères

Ce qui a été fait

> "Natto (non génétiquement modifié)"|Get-ReadingWithSudachi|fl

Line     :Natto (non génétiquement modifié)
Reading  :Natto (Idenshikumakaedenai)
Tokenize :Natto(Natto)/(/gène(Idenshi)/Recombinant(Kumikae)/alors/Absent/)
Markup   : <p><ruby>Natto<rt>Natto</rt></ruby>(<ruby>gène<rt>Idenshi</rt></ruby>
           <ruby>Recombinant<rt>Kumikae</rt></ruby>Ne pas)</p>

code

environnement:

> $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

Appelez l'analyse morphologique dans SudachiPy que j'ai écrite plus tôt ([PowerShell] analyse morphologique dans SudachiPy).

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 "symbole|Vide" -or $tokenSurface -match "^([UNE-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
}

balisage html

202009192183358.png

Parfois, je ne parviens pas à analyser des termes techniques comme celui-ci.

Vous pouvez en vérifier visuellement un ou deux, mais comme ce serait un problème de traiter des centaines de lignes, j'ai ajouté une propriété appelée Markup pour cracher le balisage html.

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

202009192184427.png

Je crois que si vous le convertissez en html comme décrit ci-dessus et que vous le vérifiez avec un navigateur, les oublis seront réduits dans une certaine mesure.

Recommended Posts

[PowerShell] Obtenez la lecture de la chaîne de caractères
[Python] Récupère le code de caractère du fichier
Obtenez le nombre de chiffres
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
Obtenez le nombre de vues de Qiita
Obtenir les attributs d'un objet
Récupérer la chaîne de requête (chaîne de requête) avec Django
Obtenez la liste des colonnes et la liste des données de CASTable
Omettre la nomenclature depuis le début de la chaîne
Obtenez les débats parlementaires via l'API
[Pandas] Développer les chaînes de caractères en DataFrame
Grammaire de base de la série Python3 (chaîne de caractères)
Obtenez la valeur de la couche intermédiaire de NN
Obtenez le dernier jour du mois spécifié
Obtenez le nom de fichier du répertoire (glob)
[Introduction à Python] Une explication approfondie des types de chaînes de caractères utilisés dans Python!
[Python] Obtenir / modifier l'étiquette d'échelle de la figure
[Python] Obtenez les principaux sujets de Yahoo News
Récupérer l'appelant d'une fonction en Python
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Divisez la chaîne de caractères en le nombre de caractères spécifié
Plage de caractères / plage de chaînes de caractères
L'histoire de la lecture des données HSPICE en Python
Obtenir uniquement la partie adresse de la carte réseau (eth0)
Convertir le code de caractère du fichier avec Python3
[Python] Get the day (anglais et japonais)
Obtenez le dernier élément du tableau en fractionnant les chaînes en Python et PHP
Obtenez la date de mise à jour du fichier de mémorandum Python.
[Ansible] Exemple de playbook qui ajoute une chaîne de caractères à la première ligne du fichier
Obtenez le titre de Yahoo News et analysez les sentiments
[Python] Obtenez le chemin d'accès officiel du fichier de raccourci (.lnk)
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Découpez une partie de la chaîne à l'aide d'une tranche Python
Obtenez l'image de "Suzu Hirose" par recherche d'images Google.
Obtenez le chemin absolu du script en cours d'exécution
Stocker le japonais (chaîne de caractères multi-octets) dans sqlite3 de python
[python] Récupère la liste des classes définies dans le module
Puisqu'il y a beaucoup de tremblements de terre, obtenez l'histoire du tremblement de terre
Récupérer le code retour d'un script Python depuis bat
[Langage C] [Linux] Récupère la valeur de la variable d'environnement
Obtenir la taille (nombre d'éléments) de Union Find en Python
[Python] Obtenir la liste des noms ExifTags de la bibliothèque Pillow
[Django 2.2] Trier et obtenir la valeur de la destination de la relation
[Python] Obtenez le nombre de vues de tous les articles publiés
Obtenez l'URL de la destination de la redirection HTTP en Python
Calculer le produit des matrices avec une expression de caractère?
J'ai essayé de résumer les opérations de chaîne de Python
Le début de cif2cell
Diverses opérations de chaîne de caractères
Obtenez la version GNOME
Le sens de soi
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
L'histoire de sys.path.append ()
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Résumé des opérations sur les chaînes