[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] PowerShell 日文句子以唸法分段、日文漢字轉換假名

本帖最后由 nwm310 于 2018-7-19 21:55 编辑

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


使用前,必須先執行
[Windows.Globalization.JapanesePhoneticAnalyzer, Windows.Globlztion, ContentType=WindowsRuntime]
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 た


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

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


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

DisplayText IsPhraseStart YomiText
----------- ------------- --------
明日                 True あした
の                  False の
天気                 True てんき


PS C:\> [Windows.Globalization.JapanesePhoneticAnalyzer]::GetWords($s2,$true)

DisplayText IsPhraseStart YomiText
----------- ------------- --------
明日                 True あした
の                  False の
天                   True てん
気                  False き


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


最多100字。超過的話就沒反應
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 ちから


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

DisplayText IsPhraseStart YomiText
----------- ------------- --------
...                  True ...              ---> 這是換行
世                   True せい        --->結果不同
は                  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         ----->結果不同
は                  False は
、                   True 、
まさに               True まさに
、                   True 、
大                   True だい
海賊                 True かいぞく
時代                 True じだい
!                   True !

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・ロジャー。
彼(かれ)の死(し)に際(さい)に放(はな)った一(ひと)言(こと)は、人々(ひとびと)を海(うみ)へ駆(か)り立(た)てた。
「俺(おれ)の財(ざい)宝(ほう)か?欲(ほ)しけりゃくれてやる。探(さが)せ!この世(よ)のすべてをそこに置(お)いてきた。」
男(おとこ)たちはグランドラインを目(め)指(ざ)し夢(ゆめ)を追(お)い続(つづ)ける!
世(よ)は、まさに、大(だい)海(かい)賊(ぞく)時(じ)代(だい)!


JapanesePhoneticAnalyzerを使ってPowerShellで形態素解析(前編)

返回列表