- 帖子
- 36
- 积分
- 105
- 技术
- 12
- 捐助
- 0
- 注册时间
- 2013-11-8
|
[技术讨论] 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で形態素解析(前編) |
|