【发布时间】:2020-03-26 15:04:26
【问题描述】:
我想做情感分析并在 python 中创建了 SVM 模型,它使用点(坐标)来绘制向量,但仅适用于数值。 我想将一个句子映射到一个向量。 示例:“食物非常美味”转换为 (a,b) 坐标,表示句子是 +ve 还是 -ve。 有没有办法将句子转换为向量。
【问题讨论】:
标签: python machine-learning project sentiment-analysis
我想做情感分析并在 python 中创建了 SVM 模型,它使用点(坐标)来绘制向量,但仅适用于数值。 我想将一个句子映射到一个向量。 示例:“食物非常美味”转换为 (a,b) 坐标,表示句子是 +ve 还是 -ve。 有没有办法将句子转换为向量。
【问题讨论】:
标签: python machine-learning project sentiment-analysis
看看 NLTK
from nltk.tokenize import sent_tokenize, word_tokenize
data = "All work and no play makes jack a dull boy, all work and no play"
print(word_tokenize(data))
这将输出:
['All', 'work', 'and', 'no', 'play', 'makes', 'jack', 'dull', 'boy', ',', 'all', 'work', 'and', 'no', 'play']
更多信息可以在这里找到: https://pythonspot.com/tokenizing-words-and-sentences-with-nltk/
然后您需要将这些单词转换为数字,最简单的方法就是使用它们的索引。
tokens = (word_tokenize(data))
indexes = [idx for idx in range(len(tokens))]
不,我们需要标准化,使数字介于 0 和 1 之间。
indexes = indexes / Len(indexes)
现在我们可以使用 tensorflow 将这些索引转换为向量。
vector = tf.convert_to_tensor(
indexes, dtype=tf.float)
)
请注意,使用张量后,您需要像这样对数据进行非规范化:
Indexes = indexes * Len(indexes)
把它变成一个词:
tokens[x]
其中 X 是您要检索的单词的索引。
【讨论】: