是否可以在Python中为非英语语言使用Gensim包?
我将输入文本与文本文件中的文本进行比较。我使用Gensim软件包来实现这一点。在这个包中,有几种方法可以将输入字符串与文本文件中的不同字符串进行比较:首先,通过查看单词的出现情况。只考虑单词的频率,而不考虑语义。因此,在这种情况下,文本的语言并不重要。然而,结果是,“你多大了?”和“你多大了?”没有相似之处,因为这些句子只由不同的单词组成。我希望这两个句子重叠,因为它们的语义相同 我用这个。用于此目的的是是否可以在Python中为非英语语言使用Gensim包?,python,gensim,similarity,Python,Gensim,Similarity,我将输入文本与文本文件中的文本进行比较。我使用Gensim软件包来实现这一点。在这个包中,有几种方法可以将输入字符串与文本文件中的不同字符串进行比较:首先,通过查看单词的出现情况。只考虑单词的频率,而不考虑语义。因此,在这种情况下,文本的语言并不重要。然而,结果是,“你多大了?”和“你多大了?”没有相似之处,因为这些句子只由不同的单词组成。我希望这两个句子重叠,因为它们的语义相同 我用这个。用于此目的的是gensim软件包的corpora和相似性模块。但是,输入文本和数据库文件中的文本是荷兰语,
gensim
软件包的corpora
和相似性
模块。但是,输入文本和数据库文件中的文本是荷兰语,而不是英语
我还没有找到任何你可以在这些模块中使用非英语语言的地方,但我也没有读到任何你看不到的地方。有人能告诉我这是否可行吗?如果没有,有人知道一个好的替代方案吗?Gensim中的算法通常不是特定于英语的,只要文本可以标记为单词。所以:您所尝试的是可能的,Gensim中的算法/示例是一个很好的起点 您是否尝试过文本上链接的教程示例中的任何代码?结果如何?你提供了多少培训文本 一般来说,由于算法不是特定于语言的,也不是从对任何语言的事先理解开始的,所以他们所知道的一切都需要从您提供的文本中的模式中学习。因此,您需要提供尽可能多的培训数据 这意味着大多数有趣的算法不会从一个小玩具数据集中学到任何东西,比如:
[
[‘多大’、‘多大’、‘你’、‘你?’],
[“什么”、“是”、“你的”、“年龄”和“?”],
]
这是因为,在没有任何其他信息的情况下,在算法看来,这基本上是完全相同的数据,如下所示:
[
[A',B',C',D',E'],
[F',G',H',I',E'],
]
(只有'E'
标记在不同的位置重复,因此在基于共现的分析级别上,它是唯一一个与其他标记不同的标记。)
但是,如果您的目标语言和问题域中有成百上千或上万个真实文本,那么该算法就不会被标记'B'
(又称'old'
)的一个特例所束缚。它会有几十个或数百个用法示例,每个示例都有不同的周边单词
在这一点上,这些算法中的数学可以检测出有用的模式。然后很可能会“意识到”'B'
('old'
)和'I'
('age'
)有某种关系。事实上,这些算法中的许多算法都可以检测到,即使它们从未完全同时出现或相互替换,但它们只是有其他经常出现的单词。在这一点上,在一个更大的语料库上训练后,你的两个句子可能会被认为是相似的
因此:
- 不要担心荷兰语和英语的角度,只要你能很好地将文本分割成单词标记列表
- 请尝试Gensim文档中的示例,但要尽可能多地使用相关的培训数据,或者等待培训-这是它了解单词/语言的方式,而不是通过任何预先编程的定义
- 如果遇到问题,请确保此处的问题描述了您尝试过的内容(最好是实际代码),以及结果/错误与预期不符的原因
- 找到其他人的荷兰语单词向量(或者自己训练他们——如果你有很多好的领域特定文本,这可能比其他人的通用向量要好得多)
- 将任何多单词文本更改为其所有单个单词的平均值
- 比较这些向量作为文本相似性的基本检查
'how'
和'what'
是疑问词,而'old'
和'age'
与类似的寿命有关。所以这个简单的基线可能表明你的两个句子比其他随机的4-5个单词更接近对方
根据您的最终需求和资源,然后还有其他更复杂的文本建模或文本比较方法可以尝试——包括也使用词向量作为输入的方法,或者将有序的词序列输入到更深层次的神经网络算法中,以创建对长文本的顺序/语法更敏感的向量表示法