Loading native/jni/NativeFileList.mk +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ LATIN_IME_CORE_SRC_FILES := \ forgetting_curve_utils.cpp \ format_utils.cpp \ mmapped_buffer.cpp \ probability_utils.cpp \ sparse_table.cpp \ trie_map.cpp ) \ suggest/policyimpl/gesture/gesture_suggest_policy_factory.cpp \ Loading Loading @@ -135,6 +136,7 @@ LATIN_IME_CORE_TEST_FILES := \ suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer_test.cpp \ suggest/policyimpl/dictionary/utils/byte_array_utils_test.cpp \ suggest/policyimpl/dictionary/utils/format_utils_test.cpp \ suggest/policyimpl/dictionary/utils/probability_utils_test.cpp \ suggest/policyimpl/dictionary/utils/sparse_table_test.cpp \ suggest/policyimpl/dictionary/utils/trie_map_test.cpp \ suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp \ Loading native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.cpp 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/utils/probability_utils.h" namespace latinime { const float ProbabilityUtils::PROBABILITY_ENCODING_SCALER = 8.58923700372f; } // namespace latinime native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h +15 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ #ifndef LATINIME_PROBABILITY_UTILS_H #define LATINIME_PROBABILITY_UTILS_H #include <algorithm> #include <cmath> #include "defines.h" namespace latinime { Loading Loading @@ -47,8 +50,20 @@ class ProbabilityUtils { + static_cast<int>(static_cast<float>(bigramProbability + 1) * stepSize); } // Encode probability using the same way as we are doing for main dictionaries. static AK_FORCE_INLINE int encodeRawProbability(const float rawProbability) { const float probability = static_cast<float>(MAX_PROBABILITY) + log2f(rawProbability) * PROBABILITY_ENCODING_SCALER; if (probability < 0.0f) { return 0; } return std::min(static_cast<int>(probability + 0.5f), MAX_PROBABILITY); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(ProbabilityUtils); static const float PROBABILITY_ENCODING_SCALER; }; } #endif /* LATINIME_PROBABILITY_UTILS_H */ native/jni/tests/suggest/policyimpl/dictionary/utils/probability_utils_test.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/utils/probability_utils.h" #include <gtest/gtest.h> #include "defines.h" namespace latinime { namespace { TEST(ProbabilityUtilsTest, TestEncodeRawProbability) { EXPECT_EQ(MAX_PROBABILITY, ProbabilityUtils::encodeRawProbability(1.0f)); EXPECT_EQ(MAX_PROBABILITY - 9, ProbabilityUtils::encodeRawProbability(0.5f)); EXPECT_EQ(0, ProbabilityUtils::encodeRawProbability(0.0f)); } } // namespace } // namespace latinime Loading
native/jni/NativeFileList.mk +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ LATIN_IME_CORE_SRC_FILES := \ forgetting_curve_utils.cpp \ format_utils.cpp \ mmapped_buffer.cpp \ probability_utils.cpp \ sparse_table.cpp \ trie_map.cpp ) \ suggest/policyimpl/gesture/gesture_suggest_policy_factory.cpp \ Loading Loading @@ -135,6 +136,7 @@ LATIN_IME_CORE_TEST_FILES := \ suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer_test.cpp \ suggest/policyimpl/dictionary/utils/byte_array_utils_test.cpp \ suggest/policyimpl/dictionary/utils/format_utils_test.cpp \ suggest/policyimpl/dictionary/utils/probability_utils_test.cpp \ suggest/policyimpl/dictionary/utils/sparse_table_test.cpp \ suggest/policyimpl/dictionary/utils/trie_map_test.cpp \ suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp \ Loading
native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.cpp 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/utils/probability_utils.h" namespace latinime { const float ProbabilityUtils::PROBABILITY_ENCODING_SCALER = 8.58923700372f; } // namespace latinime
native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h +15 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ #ifndef LATINIME_PROBABILITY_UTILS_H #define LATINIME_PROBABILITY_UTILS_H #include <algorithm> #include <cmath> #include "defines.h" namespace latinime { Loading Loading @@ -47,8 +50,20 @@ class ProbabilityUtils { + static_cast<int>(static_cast<float>(bigramProbability + 1) * stepSize); } // Encode probability using the same way as we are doing for main dictionaries. static AK_FORCE_INLINE int encodeRawProbability(const float rawProbability) { const float probability = static_cast<float>(MAX_PROBABILITY) + log2f(rawProbability) * PROBABILITY_ENCODING_SCALER; if (probability < 0.0f) { return 0; } return std::min(static_cast<int>(probability + 0.5f), MAX_PROBABILITY); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(ProbabilityUtils); static const float PROBABILITY_ENCODING_SCALER; }; } #endif /* LATINIME_PROBABILITY_UTILS_H */
native/jni/tests/suggest/policyimpl/dictionary/utils/probability_utils_test.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/utils/probability_utils.h" #include <gtest/gtest.h> #include "defines.h" namespace latinime { namespace { TEST(ProbabilityUtilsTest, TestEncodeRawProbability) { EXPECT_EQ(MAX_PROBABILITY, ProbabilityUtils::encodeRawProbability(1.0f)); EXPECT_EQ(MAX_PROBABILITY - 9, ProbabilityUtils::encodeRawProbability(0.5f)); EXPECT_EQ(0, ProbabilityUtils::encodeRawProbability(0.0f)); } } // namespace } // namespace latinime