weixin_38911685 2022-05-31 04:29 采纳率: 50%
浏览 59
已结题

输出词向量词汇中总是夹杂着编码 怎么解决

输出词向量词汇中总是夹杂着编码

img

问题相关代码,请勿粘贴截图

from re import A
import warnings
import gensim
from matplotlib.pyplot import get

if name == 'main':
warnings.filterwarnings(action='ignore', category=UserWarning,module='gensim')
model = gensim.models.Word2Vec.load("douluo.model")

word = 'ᠤᠳᠠᠲᠠᠯ\u180eᠠ'
result = model.wv.similar_by_word(word)
print('输入词为: '+word)

if word in model.wv.key_to_index != True:
    print('输入的词: ( '+word+' ) 可以在词表中找到')
else:
    print('这个词在词嵌入表中无法找到')


print("跟 "+word+" 最相近的词:")
print(type(result))
for i in result:
    print(i)
运行结果及报错内容

跟 ᠤᠳᠠᠲᠠᠯ᠎ᠠ 最相近的词:
<class 'list'>
('ᠴᠢᠳᠠᠲᠠᠯ\u180eᠠ', 0.8069231510162354)
('ᠠᠲᠠᠯ\u180eᠠ', 0.75520259141922)
('ᠳᠤᠨᠳᠠᠷᠠᠲᠠᠯ\u180eᠠ', 0.7440893650054932)
('ᠲᠣᠩᠭᠣᠷᠠᠲᠠᠯ\u180eᠠ', 0.6954106092453003)
('ᠵᠢᠮ᠃', 0.6887457966804504)
('ᠰᠤᠩᠭᠠᠲᠠᠯ\u180eᠠ', 0.6865381002426147)
('ᠭᠠᠷᠭᠠᠲᠠᠯ\u180eᠠ', 0.6848090887069702)
('ᠰᠤᠨᠲᠠᠯ\u180eᠠ', 0.6813605427742004)
('ᠠᠩᠭᠢᠵᠢᠷᠠᠲᠠᠯ\u180eᠠ', 0.6628503799438477)
('ᠬᠤᠷᠢᠶᠠᠲᠠᠯ\u180eᠠ', 0.659303605556488)

我的解答思路和尝试过的方法

我发现
word = 'ᠤᠳᠠᠲᠠᠯ\u180eᠠ'
print('输入词为: '+word)
得到输出是:
输入词为: ᠤᠳᠠᠲᠠᠯ᠎ᠠ
把带有编码的词输入再输出一下就可以得到没有编码的词,我写到文件夹再读进来发现依旧是带编码的

我想要达到的结果

怎么可以直接输出不带编码的

展开全部

  • 写回答

2条回答 默认 最新

  • 小康2022 Python领域新星创作者 2022-05-31 05:30
    关注

    【有帮助请采纳】

    看它的编码方式是哪一种,然后可以用encode函数与decode函数进行字符串的编码与解码
    例如:

    s = '123'
    a = s.encode('utf-8')
    print(a)# 输出字符串s按utf-8编码后的结果
    b = a.decode('utf')
    print(b)# 输出a按utf-8解码后的结果
    

    【有帮助请采纳】

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
    weixin_38911685 2022-05-31 06:36

    
        word = 'ᠤᠳᠠᠲᠠᠯ\u180eᠠ'
        result = model.wv.similar_by_word(word)
        print('输入词为: '+word)
        
        if word in model.wv.key_to_index != True:
            print('输入的词: ( '+word+' ) 可以在词表中找到')
        else:
            print('这个词在词嵌入表中无法找到')
    
    
        print("跟 "+word+" 最相近的词:")
        print(type(result))
        i=str(result)
        print (i.encode('utf-8'). decode('utf-8') )       
    #输出依旧是[('ᠴᠢᠳᠠᠲᠠᠯ\u180eᠠ', 0.8069231510162354), ('ᠠᠲᠠᠯ\u180eᠠ', 0.75520259141922), ('ᠳᠤᠨᠳᠠᠷᠠᠲᠠᠯ\u180eᠠ', 0.7440893650054932), ('ᠲᠣᠩᠭᠣᠷᠠᠲᠠᠯ\u180eᠠ', 0.6954106092453003), ('ᠵᠢᠮ᠃', 0.6887457966804504), ('ᠰᠤᠩᠭᠠᠲᠠᠯ\u180eᠠ', 0.6865381002426147), ('ᠭᠠᠷᠭᠠᠲᠠᠯ\u180eᠠ', 0.6848090887069702), ('ᠰᠤᠨᠲᠠᠯ\u180eᠠ', 0.6813605427742004), ('ᠠᠩᠭᠢᠵᠢᠷᠠᠲᠠᠯ\u180eᠠ', 0.6628503799438477), ('ᠬᠤᠷᠢᠶᠠᠲᠠᠯ\u180eᠠ', 0.659303605556488)]
    

    回复
    小康2022 回复 weixin_38911685 2022-05-31 06:46

    是不想要输出字符串中的\u180e吗?如果是,可以直接对字符串切片就行了

    回复
    小康2022 回复 weixin_38911685 2022-05-31 06:53

    先encode再decode不是等于没有改变原值吗?

    回复
    展开全部21条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月31日
  • 创建了问题 5月31日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部