From 6a0720478d2e44fc876b3446d7348083f154aeb8 Mon Sep 17 00:00:00 2001 From: Kurt Partridge Date: Thu, 9 Aug 2012 12:24:47 -0700 Subject: [PATCH] ResearchLogger switch word segmentation Previously, a logunit was considered a word only if it was all letters. This is important for tracking bigrams correctly. Now, a logunit must have only at least one letter. The dictionary check is still performed, and punctuation, etc. still comes in as separate LogUnits. But a word can contain a space, which helps set up for logging words where spaces are inserted automatically, and other situations in which text is committed with an additional space tacked onto the end. Change-Id: Ia74094a99058890d20a9cdadf2d0989841a79a41 --- .../android/inputmethod/research/ResearchLogger.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java index bae34340f..ea3f6fd7a 100644 --- a/java/src/com/android/inputmethod/research/ResearchLogger.java +++ b/java/src/com/android/inputmethod/research/ResearchLogger.java @@ -731,20 +731,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang researchLog.publish(closingLogUnit, true /* isIncludingPrivateData */); } - private boolean hasOnlyLetters(final String word) { + private boolean hasLetters(final String word) { final int length = word.length(); for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) { final int codePoint = word.codePointAt(i); - if (!Character.isLetter(codePoint)) { - return false; + if (Character.isLetter(codePoint)) { + return true; } } - return true; + return false; } private void onWordComplete(final String word) { Log.d(TAG, "onWordComplete: " + word); - if (word != null && word.length() > 0 && hasOnlyLetters(word)) { + if (word != null && word.length() > 0 && hasLetters(word)) { mCurrentLogUnit.setWord(word); mStatistics.recordWordEntered(); }