golang代码实例库

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2618|回复: 0

golang:汉字转拼音,使用拼音pinyin判断两段汉字是否相同

[复制链接]

82

主题

82

帖子

486

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
486
发表于 2022-6-8 19:32:05 | 显示全部楼层 |阅读模式
实例说明
语音识别的时候,两个用户哥读了一段语音,我们怎么判断两个用户读的内容是否相同呢?
因为语音识别出来的内容,不一定是完全一致的,有写同音字识别上会有问题,特别是名字等没有任何特征的词。
这个时候我们可以将识别出来的内容转成拼音,然后比较拼音是否相同
1)汉字转拼音

ps:我们主要使用这个组件,里面有很多转汉字的例子
https://github.com/mozillazg/go-pinyin


实例代码
[Golang] 纯文本查看 复制代码
package main

import (
	"fmt"
	"unicode/utf8"

	"github.com/mozillazg/go-pinyin"
)

// isSamePinyin 是否相同拼音
func isSamePinyin(srcTxt, targetTxt string) bool {
	// 如果两段文字字数不同,则拼音不同
	if utf8.RuneCountInString(srcTxt) != utf8.RuneCountInString(targetTxt) {
		return false
	}

	// 获取源字符串,目的字符串的拼音
	args := pinyin.NewArgs()
	args.Heteronym = true
	srcPys := pinyin.Pinyin(srcTxt, args)
	targetPys := pinyin.Pinyin(targetTxt, args)
	// 如果拼音数量不同,则拼音不同
	if len(srcPys) != len(targetPys) {
		return false
	}

	// 比较拼音是否相同
	// srcPys:[[wo] [ai] [xue] [xi]]
	// targetPys:[[o wo wu o o] [ai ai] [xue] [shan]]
	// 只要targetPys中一四组拼音,代表四个字,只要每一组中的任意一个拼音,
	// 在srcPys中对应的组中存在,则该组拼音相同
	for i, tpys := range targetPys {
		find := false
		for _, tpy := range tpys {
			for _, spy := range srcPys[i] {
				if spy == tpy {
					find = true
					break
				}
			}
			if find {
				break
			}
		}
		if !find {
			return false
		}
	}

	return true
}

func main() {
	// 比较两个短句是否拼音一致
	srcTxt := "我爱学习"
	targetTxt := "喔挨雪戏"
	isSame := isSamePinyin(srcTxt, targetTxt)
	fmt.Printf("%+v\n", isSame)
	// true

	// 转拼音
	hans := "中国人"
	// 默认不开启多音字
	a := pinyin.NewArgs()
	fmt.Println(pinyin.Pinyin(hans, a))
	// [[zhong] [guo] [ren]]

	// 开启多音字
	hans1 := "行伍出身"
	a1 := pinyin.NewArgs()
	a1.Heteronym = true
	fmt.Println(pinyin.Pinyin(hans1, a1))
	// [[xing hang heng xing hang] [wu] [chu] [shen juan]]
	// 通过这里的输出内容,我们也可以看出,这里的转拼音只是机械性的一个字一个字的转,本身不会进行语意分析。
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|golang代码实例库 ( 粤ICP备2021162396号 )

GMT+8, 2024-12-5 08:41 , Processed in 0.018956 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表