问题描述
我想使用langdetect检测文本中的语言。 根据{{3}} ,我必须设置一个种子以获得稳定的结果。
语言检测算法是不确定性的,这意味着如果您尝试在太短或太含糊的文本上运行它,则每次运行它都可能得到不同的结果。 为了获得一致的结果,请在检测到第一种语言之前调用以下代码:
如下所示,结果似乎不起作用。我想念什么?
from langdetect import detect,detector_factory,detect_langs
my_string = "Hi,my friend lives next to me. Can you call her? Thibault François. Envoyé depuis mon mobile"
detector_factory.seed = 42
for i in range(5):
print(detect_langs(my_string),detect(my_string))
结果示例:
[fr:0.7142820855500301,en:0.28571744799229243] en
[fr:0.7142837342663328,en:0.2857140098811736] en
[en:0.571427940246422,fr:0.4285710874902514] fr
[en:0.5714284102904427,fr:0.42857076299207464] fr
[en:0.5714277269187811,fr:0.4285715961184375] fr
解决方法
如果您使用//Table Data
const **CompanyData** = [
{id: 1,name: 'Company1',phone: 'Phone1',address: 'Miron1',persons: [1,2]},{id: 2,name: 'Company2',phone: 'Phone2',address: 'Miron2',persons: [1]},{id: 3,name: 'Company3',phone: 'Phone3',address: 'Miron3'}
]
//Person Data
const **PersonData** = [
{id: 1,firstName: 'a',lastName: 'b',phone: 'phone1',address: 'Miron1'},firstName: 'c',lastName: 'd',phone: 'phone2',address: 'Miron2'},firstName: 'e',lastName: 'f',phone: 'phone3',address: 'Miron3'}
]
//Filter Person
CompanyData.forEach((company) => {
if(company.persons) {
company.persons = company.persons.map((member) => {
return PersonData.filter((person) =>{
return person.id === member
})
})
}
})
(如文档中所建议)代替DetectorFactory
,则可以使用。
detector_factory
结果:
from langdetect import detect,DetectorFactory,detect_langs
my_string = "Hi,my friend lives next to me. Can you call her? Thibault François. Envoyé depuis mon mobile"
DetectorFactory.seed = 42
for i in range(5):
print(detect_langs(my_string),detect(my_string))