ما هي أفضل طريقة لتحديد إجمالي عدد كلمات الملف في Java؟
-
07-07-2019 - |
سؤال
ما هي أفضل طريقة للعثور على إجمالي عدد الكلمات في ملف نصي في Java؟أعتقد أن Perl هو الأفضل في العثور على أشياء مثل هذه.إذا كان هذا صحيحًا، فسيكون استدعاء وظيفة Perl من داخل Java هو الأفضل؟ماذا كنت ستفعل في مثل هذه الحالة؟أي أفكار أفضل؟
المحلول
ومبروك لديك تعثر على واحدة من أكبر المشاكل اللغوية! ما هي الكلمة؟ ويقال أن الكلمة هي الكلمة الوحيدة التي يعني في الواقع ما هو عليه. هناك كامل مجال اللغويات المكرسة لكلمات / وحدات من معنى - مورفولوجيا
وأفترض أن سؤالك تتعلق عد الكلمات في اللغة الإنجليزية. ومع ذلك، وخلق محايدة باللغة كلمة عداد / محلل هو أقرب إلى المستحيل بسبب الاختلافات اللغوية. على سبيل المثال، يمكن للمرء أن أعتقد أن مجرد معالجة مجموعة من الأحرف مفصولة المساحة البيضاء غير كافية. ومع ذلك، إذا نظرتم الى المثال التالي باللغة اليابانية، وسترون ان لا يعمل هذا النهج:
وこ れ は 日本語 の 例文 で す.
وهذا المثال يحتوي على 3 كلمات واضحة ويتم فصل أي منهم بمسافات. عادة، يتم تحليل حدود الكلمة اليابانية باستخدام نهج قائم على القاموس، وهناك عدد من المكتبات التجارية المتاحة لهذا الغرض. نحن محظوظين لديك مسافات في اللغة الإنجليزية! وأعتقد أن اللغات الهندية والصينية والكورية لديها أيضا مشاكل مماثلة.
إذا هذا الحل سوف يتم نشرها في الواقع في أي الطرق التي مدخلات متعددة اللغات هو ممكن، وسيكون من المهم أن تكون قادرة على سد العجز في مختلف وسائل كلمة الفرز حسب اللغة التي يتم تحليلها.
وأعتقد أن الإجابة الأولى إجابة جيدة لأنه يستخدم المعرفة جاوة القيم بيضاء يونيكود كمحددات. ومن tokenizes عن طريق مطابقة باستخدام التعابير المنطقية التالية: \p{javaWhitespace}+
نصائح أخرى
int count = 0;
Scanner sc = new Scanner(new File("my-text-file.txt"));
while (sc.hasNext()) {
++count;
sc.next();
}
على الرغم من أن Perl يمكنه القيام بذلك، إلا أنني أعتبر أنه من المبالغة ربطه/استدعائه لهذا النوع من المهام (ما لم تكن قد قمت بالفعل باختبار ذلك).
- اقتراحي هو البحث عن التعليمات البرمجية التي تفعل ما تحتاجه على الويب والتعلم منه، على سبيل المثال.هنا: http://schmidt.devlib.org/java/word-count.html
إذا كنت على يونيكس، وwc -w filename
تفعل خدعة.
وجعل بعض الافتراضات حول ما يعرف "كلمة"، حل واحد سيكون لفتح الملف باستخدام قارئ تيار النص ومسحها ضوئيا، عد عدد الأحرف مسافة بيضاء غير متجاورة، زائد واحد في نهاية، على سبيل المثال
this is some sample text
this is some more sample text
والنص أعلاه سيكون 11 كلمات في ذلك، عد إلى 9 المساحات و1 سطر جديد و 1 نهاية الملف
وكنت تهيئة الباحث word_count
إلى 1، ثم حلقة من خلال كل حرف في الملف وزيادة word_count
لكل حرف مسافة بيضاء <م> إلا م> كان الحرف السابق حرف مسافة بيضاء. (A مساحة أو علامة التبويب أو سطر جديد).