【PowerShell】 문자열의 읽기가 나를 얻는다
12256 단어 파이썬SudachiPyPowerShell텍스트 처리스다치
할 수있는 것
> "納豆(遺伝子組み換えでない)"|Get-ReadingWithSudachi|fl
Line : 納豆(遺伝子組み換えでない)
Reading : ナットウ(イデンシクミカエデナイ)
Tokenize : 納豆(ナットウ)/(/遺伝子(イデンシ)/組み換え(クミカエ)/で/ない/)
Markup : <p><ruby>納豆<rt>ナットウ</rt></ruby>(<ruby>遺伝子<rt>イデンシ</rt></ruby>
<ruby>組み換え<rt>クミカエ</rt></ruby>でない)</p>
코드
환경:
> $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
이전에 작성한 SudachiPy에서 형태소 분석을 호출합니다 (【PowerShell】 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 "記号|空白" -or $tokenSurface -match "^([ァ-ヴ・ー]|[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 "^[ぁ-ん]+$")?
$tokenSurface :
"$($tokenSurface)($tokenReading)"
$tokenMarkup = ($tokenSurface -match "^[ぁ-ん]+$")?
$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 마크업
가끔 이러한 느낌으로 전문 용어의 해석에 실패합니다.
1개 2개이면 육안으로 체크할 수 있습니다만, 수백행을 처리하면 곤란하기 때문에,
Markup
라고 하는 프로퍼티로 html 마크업을 토해내게 했습니다.(cat hogehoge.txt |Get-ReadingWithSudachi).markup|Out-File hogehoge.html
위와 같이 html화하여 브라우저에서 확인하면 다소 간과가 줄어든다고 믿습니다.
Reference
이 문제에 관하여(【PowerShell】 문자열의 읽기가 나를 얻는다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AWtnb/items/e0caaeaf32b4f55d6761텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)