批处理之家's Archiver

nwm310 发表于 2018-7-19 21:44

PowerShell 日文句子以唸法分段、日文漢字轉換假名

[i=s] 本帖最后由 nwm310 于 2018-7-19 21:55 编辑 [/i]

需要安裝日本語
Win10 → 設定 → 時間與語言 → 地區與語言 → 新增語言 → 日本語


使用前,必須先執行
[Windows.Globalization.JapanesePhoneticAnalyzer, Windows.Globlztion, ContentType=WindowsRuntime]
[quote]PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer, Windows.Globlztion, ContentType=WindowsRuntime] > $null
PS C:\> $s="あの頃、君を追いかけた"
PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s)

DisplayText IsPhraseStart YomiText
----------- ------------- --------
あの                 True あの
頃                   True ころ
、                   True 、
君                   True きみ
を                  False を
追いかけ             True おいかけ
た                  False た
[/quote]

GetWords 第二參數:以漢字、假名為單位
但仍然可以用 IsPhraseStart 得知唸法開頭
[quote]PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s,[b][color=Red]$true[/color][/b])

DisplayText IsPhraseStart YomiText
----------- ------------- --------
あ                   True あ
の                  False の
頃                   True ころ
、                   True 、
君                   True きみ
を                  False を
追                   True お
い                  False い
か                  False か
け                  False け
た                  False た[/quote]

「明日」對應到「あした」,不能分割
[quote]PS C:\> $s2='明日の天気'
PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s2)

DisplayText IsPhraseStart YomiText
----------- ------------- --------
[b][color=Red]明日[/color][/b]                 True あした
の                  False の
天気                 True てんき


PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s2,[b][color=Red]$true[/color][/b])

DisplayText IsPhraseStart YomiText
----------- ------------- --------
[b][color=Red]明日[/color][/b]                 True あした
の                  False の
天                   True てん
気                  False き[/quote]

Here字串的換行可能不同:
在PowerShell窗口貼上,換行為`n
在ps1,換行為 `r`n  (用記事本編輯)
[quote]PS C:\> $s3=@'
>> 富、名声、力、この世のすべてを手に入れた男。
>> 海賊王ゴール・D・ロジャー。
>> 彼の死に際に放った一言は、人々を海へ駆り立てた。
>> 「俺の財宝か?欲しけりゃくれてやる。探せ!この世のすべてをそこに置いてきた。」
>> 男たちはグランドラインを目指し夢を追い続ける!
>> 世は、まさに、大海賊時代!
>> '@
[/quote]

最多100字。超過的話就沒反應
[quote]
PS C:\> $s3.Length
140
PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s3)
PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s3.Substring(0,101))
PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s3.Substring(0,100))

DisplayText IsPhraseStart YomiText
----------- ------------- --------
富                   True とみ
、                   True 、
名声                 True めいせい
、                   True 、
力                   True ちから

[/quote]

換行可能會影響結果
[quote]PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s3.Substring(126))

DisplayText IsPhraseStart YomiText
----------- ------------- --------
...                  True ...              ---> 這是換行
世                   True [b][color=Red]せい[/color][/b]        --->結果不同
は                  False は
、                   True 、
まさに               True まさに
、                   True 、
大                   True だい
海賊                 True かいぞく
時代                 True じだい
!                   True !


PS C:\> $s3[126] -eq "`n"
True

PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s3.Substring(127))

DisplayText IsPhraseStart YomiText
----------- ------------- --------
世                   True [b][color=Red]よ[/color][/b]        ----->結果不同
は                  False は
、                   True 、
まさに               True まさに
、                   True 、
大                   True だい
海賊                 True かいぞく
時代                 True じだい
!                   True ![/quote]

[quote]PS C:\> $s3 -split '\r\n|\n' | %{
>> (
>>     [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($_ , $true) | %{
>>         if ($_.DisplayText -eq $_.YomiText -or $_.DisplayText -match '\p{IsKatakana}'){
>>             $_.DisplayText
>>         }else{
>>             "$($_.DisplayText)($($_.YomiText))"
>>         }
>>     }
>> ) -join ''
>> }
富(とみ)、名(めい)声(せい)、力(ちから)、この世(よ)のすべてを手(て)に入(い)れた男(おとこ)。
海(かい)賊(ぞく)王(おう)ゴール・D・ロジャー。
彼(かれ)の死(し)に際(さい)に放(はな)った一(ひと)言(こと)は、人々(ひとびと)を海(うみ)へ駆(か)り立(た)てた。
「俺(おれ)の財(ざい)宝(ほう)か?欲(ほ)しけりゃくれてやる。探(さが)せ!この世(よ)のすべてをそこに置(お)いてきた。」
男(おとこ)たちはグランドラインを目(め)指(ざ)し夢(ゆめ)を追(お)い続(つづ)ける!
世(よ)は、まさに、大(だい)海(かい)賊(ぞく)時(じ)代(だい)!
[/quote]

[url=http://winscript.jp/powershell/299]JapanesePhoneticAnalyzerを使ってPowerShellで形態素解析(前編)[/url]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.