在终端中编码、解码阿拉伯语时出现问题 [英] Issues while encoding, decoding arabic language in terminal

查看:28
本文介绍了在终端中编码、解码阿拉伯语时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的脚本中,首先需要将阿拉伯字符串转换为向量,然后再执行余弦相似度在 Linux 下的终端上 --> 将阿拉伯语字符串转换为生成阿拉伯语的向量时出现的问题:

[u'\u0627\u0644\u0634\u0645\u0633\u0645\u0634\u0631\u0642\u0647\u0646\u0647\u0627\u0637\u0645\u0633\u0645\u0634\u0646\u0647\u0627\u0637\u0604\u304u0645\u0627\u0621\u0632\u0631\u0642\u0627\u0621']

我的脚本:

train_set = ["السماء زرقاء", "الشمس مشرقه نهارا"] #Documentstest_set = ["الشمس التى فى السماء مشرقه","السماء زرقاء"] #QuerystopWords = set(stopwords.words('english'))vectorizer = CountVectorizer(stop_words = stopWords)变压器 = TfidfTransformer()trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()testVectorizerArray = vectorizer.transform(test_set).toarray()打印使向量化器适合训练集",trainVectorizerArray打印将向量化器转换为测试集",testVectorizerArraycx = lambda a, b : round(np.inner(a, b)/(LA.norm(a)*LA.norm(b)), 3)对于 trainVectorizerArray 中的向量:打印矢量对于 testVectorizerArray 中的 testV:打印测试V余弦 = cx(向量,testV)打印余弦

解决方案

你的结果是一个字符串列表,只要加入字符串,你就会得到一个清晰的句子:

<预><代码>>>>打印 "\n".join(a)الشمس مشرقه نهاراالسماء زرقاء

In my script Cosine similarity need first, to convert an Arabic string into a vector before perform Cosine similarity on terminal under Linux --> problem while convert Arabic string to vector producing Arabic as:

[u'\u0627\u0644\u0634\u0645\u0633 \u0645\u0634\u0631\u0642\u0647 \u0646\u0647\u0627\u0631\u0627', u'\u0627\u0644\u0633\u0645\u0627\u0621 \u0632\u0631\u0642\u0627\u0621']

My script:

train_set = ["السماء زرقاء", "الشمس مشرقه نهارا"] #Documents
test_set = ["الشمس التى فى السماء مشرقه","السماء زرقاء"] #Query
stopWords = set(stopwords.words('english'))

vectorizer = CountVectorizer(stop_words = stopWords)
transformer = TfidfTransformer()
trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
testVectorizerArray = vectorizer.transform(test_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
print 'Transform Vectorizer to test set', testVectorizerArray
cx = lambda a, b : round(np.inner(a, b)/(LA.norm(a)*LA.norm(b)), 3)

for vector in trainVectorizerArray:
    print vector
    for testV in testVectorizerArray:
        print testV
        cosine = cx(vector, testV)
        print cosine

解决方案

Your result is a list of strings, just join the string and you will get a clear sentence:

>>> print "\n".join(a)
الشمس مشرقه نهارا
السماء زرقاء

这篇关于在终端中编码、解码阿拉伯语时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆