2012-01-23 16 views
5

Bây giờ, đây là một vấn đề phức tạp mà tôi không thể tìm ra giải pháp tốt. Giả sử chúng ta có một chuỗi trong Java: - "Anh ta ăn 3 quả táo ngày hôm nay." Bây giờ chữ số 3 có thể dễ dàng xác định trong Java bằng cách sử dụng hàm isNumeric hoặc sử dụng các biểu thức chính quy. Nhưng nếu tôi có một chuỗi như: "Anh ta ăn ba quả táo hôm nay."? Làm thế nào tôi có thể xác định rằng ba thực sự là một số? Tôi đã sử dụng OpenNlp và sử dụng trình gắn thẻ POS của nó nhưng thời gian cần làm thực sự là quá nhiều! Bất cứ ai có thể đề xuất một giải pháp tốt hơn cho việc này? Cũng trong số ".bin" của OpenNlp, có một tệp - "num.bin", nhưng tôi không biết cách sử dụng tệp này. Tài liệu OpenNlp cũng không nói gì về nó. Bất cứ ai có thể cho tôi biết nếu điều này là chính xác những gì tôi đã được tìm kiếm, và nếu có thì làm thế nào để sử dụng nó.Xử lý văn bản trong Java

/* ** * ** * ** * ** * ** * ** * ** * ** * * * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **/ tôi thực sự thời gian ngắn cô e, vì vậy tôi đã giải quyết một giải pháp tạm thời ở đây. Tạo một tập tin/từ điển và lấy tất cả các mục trong một hashtable. Sau đó, tôi sẽ tokenize câu của tôi và kiểm tra từng chữ số, tương tự như những gì bạn guys đề nghị. Tôi sẽ tiếp tục cập nhật tệp và khi được yêu cầu. Cảm ơn các bạn gợi ý có giá trị của bạn, và nếu bạn có một cái gì đó tốt hơn điều này tôi sẽ rất vui. OpenNlp thực hiện điều này một cách rất tốt, vấn đề duy nhất với nó là thời gian phức tạp và tôi muốn làm điều này trong thời gian tối thiểu có thể.

+0

Bạn có cần chỉ phát hiện các số và chỉ bằng ngôn ngữ tiếng Anh không? Nếu có, tôi không nghĩ rằng bạn cần một số thư viện cho điều đó. Sẽ dễ dàng hơn khi viết bằng tay. – bezmax

+0

có ... số chỉ .... nhưng bất kỳ loại số, số thập phân, phân số, tỷ lệ phần trăm, số điểm bóng đá như 3-1 cũng nên được phát hiện ...... chỉ bằng tiếng Anh ... –

Trả lời

0

Bạn phải giữ tất cả các từ đó trong mảng và sau đó sử dụng nó.Here là ví dụ về cách chuyển đổi số thành chuỗi. Nó có thể giúp bạn ... Tôi nghĩ rằng bạn phải chia văn bản của bạn thành các từ và kiểm tra xem một từ là một số (ba). Nếu có, hãy kiểm tra từ tiếp theo vì có thể nói "triệu", sau đó kiểm tra từ tiếp theo và cứ tiếp tục như vậy. Nó không phải dễ dàng và có vẻ như một thư viện nhỏ. Tôi nghĩ rằng bạn sẽ dành rất nhiều thời gian bằng văn bản này. Hoặc cố gắng tìm kiếm trong một thư viện như thế này trong google. Có lẽ ai đó đã có vấn đề này, đã viết một thư viện và chia sẻ nó miễn phí)) Chúc may mắn.

1

Tạo từ điển số. Tìm kiếm các phần tử từ từ điển đó trong văn bản.

Kiểm tra độ phức tạp không đối xứng, có thể rẻ hơn để sắp xếp văn bản trước tiên.

+0

có thể thực hiện được , nhưng sau đó từ điển sẽ trở nên lớn như thế nào? văn bản như trăm, bốn mươi ba, năm mươi, v.v .. Tôi sẽ phải thêm tất cả các từ có thể vào từ điển ..... –

+0

Không phải là từ điển, sử dụng biểu đồ định hướng trọng số. –