pybind_ext.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <pybind11/pybind11.h>
  2. #include <pybind11/pytypes.h>
  3. #include <pybind11/stl.h>
  4. #include "../src/nnet_language_identifier.h"
  5. namespace pybind11 {
  6. using chrome_lang_id::NNetLanguageIdentifier;
  7. // This is conventional.
  8. namespace py = pybind11;
  9. PYBIND11_MODULE(pybind_ext, py_module) {
  10. py::class_<NNetLanguageIdentifier>(py_module, "NNetLanguageIdentifier")
  11. .def(py::init<const int, const int>(), py::arg("min_num_bytes"),
  12. py::arg("max_num_bytes"))
  13. .def("FindLanguage", &NNetLanguageIdentifier::FindLanguage,
  14. py::arg("text"))
  15. .def("FindTopNMostFreqLangs",
  16. &NNetLanguageIdentifier::FindTopNMostFreqLangs, py::arg("text"),
  17. py::arg("num_langs"))
  18. .def_readonly_static("kUnknown", &NNetLanguageIdentifier::kUnknown)
  19. .def_readonly_static("kMinNumBytesToConsider",
  20. &NNetLanguageIdentifier::kMinNumBytesToConsider)
  21. .def_readonly_static("kMaxNumBytesToConsider",
  22. &NNetLanguageIdentifier::kMaxNumBytesToConsider)
  23. .def_readonly_static("kMaxNumInputBytesToConsider",
  24. &NNetLanguageIdentifier::kMaxNumInputBytesToConsider)
  25. .def_readonly_static("kReliabilityThreshold",
  26. &NNetLanguageIdentifier::kReliabilityThreshold)
  27. .def_readonly_static("kReliabilityHrBsThreshold",
  28. &NNetLanguageIdentifier::kReliabilityHrBsThreshold);
  29. py::class_<NNetLanguageIdentifier::Result>(py_module, "Result")
  30. .def_readwrite("language", &NNetLanguageIdentifier::Result::language)
  31. .def_readwrite("probability",
  32. &NNetLanguageIdentifier::Result::probability)
  33. .def_readwrite("is_reliable",
  34. &NNetLanguageIdentifier::Result::is_reliable)
  35. .def_readwrite("proportion", &NNetLanguageIdentifier::Result::proportion);
  36. }
  37. } // namespace pybind11