2010-01-04 25 views
10

Tôi đang tìm một cái gì đó như Google Sets, nhưng ở dạng API. Google Sets không cho phép cạo, cũng như không có API.Cách tốt để truy xuất các từ có liên quan đến một từ nhất định là gì?

Ví dụ, tôi muốn tìm kiếm "điện tử" và yêu cầu trả lại "trình phát CD, truyền hình, điện thoại, máy tính, v.v ...". Có thể, như Google Sets, phải mất một vài từ.

Bất kỳ ý tưởng nào? Có một số API mở hay cách khác để trích xuất dữ liệu như thế này?

+0

Tôi đang bỏ phiếu để đóng câu hỏi này thành chủ đề vì 1) nó yêu cầu công cụ và 2) liên kết đều đã chết – YvesLeBorg

+0

Tôi đang bỏ phiếu không đóng vì 1) không yêu cầu một công cụ, và 2) Tôi đã dành 2 phút sửa chữa liên kết chết thay vì bỏ phiếu để đóng câu hỏi, và cuối cùng 3) Ở đây tôi năm năm sau với một vài lựa chọn để thêm vào một câu trả lời mới. – TheSoftwareJedi

Trả lời

1

Âm thanh như những gì bạn đang tìm kiếm không phải là từ điển vì bạn không tìm kiếm các từ thay thế có ý nghĩa tương tự nhưng bạn thực sự đang tìm kiếm những từ mà tất cả đều có một số mối quan hệ tiếp tuyến.

Đã không cố gắng này bản thân mình nhưng điều này có thể là một nơi tốt để bắt đầu

http://www.wait-till-i.com/2008/11/13/yahoo-boss-keyword-extraction-api-wrappers-jsphp/

2

Có thể rằng WordNet có thể giúp bạn: http://wordnet.princeton.edu/

Trong mặt WordNet là một cơ sở dữ liệu từ vựng lớn của tiếng Anh, các từ ở đây được liên kết với nhau bằng các quan hệ khái niệm ngữ nghĩa và từ vựng.

0

Không có API trực tuyến mạnh mẽ cho việc này, nhưng bạn có thể tự xây dựng nó nếu bạn có tham vọng.

1) Tạo trình thu thập dữ liệu web có thể thu thập dữ liệu ít nhất một triệu trang web. Bạn có thể dừng nó một khi nó đạt tới điểm đó. Sử dụng trình phân tích cú pháp NLP để trích xuất các từ danh từ/danh từ từ tiêu đề và văn bản và lưu trữ chúng vào một chỉ mục tìm kiếm như ElasticSearch. Đối với các chỉ mục tìm kiếm, có một "thẻ" lĩnh vực có chứa tất cả các cụm danh từ cho một trang web:

IE:

tags: ["ruby", "rails", "programming", "dev"] 
tags: ["mlb", "baseball", "fans", "stadium", "miguel cabrera"] 

Sau đó, thực hiện tìm kiếm mặt trên các lĩnh vực thẻ. Vì vậy, nếu bạn thực hiện tìm kiếm cụm từ "mlb", nó sẽ trả lại các cụm từ phổ biến nhất trong cùng một trang web như MLB.

0

Nếu API hiện tại không đủ, có nhiều dịch vụ web cho phép bạn kết hợp nội dung và thực hiện những điều gọn gàng với chúng, với một trong những mạnh nhất là YQL. Bạn có thể sử dụng YQL để trích xuất nội dung từ bất kỳ trang web nào và về cơ bản biến nó thành dịch vụ web cá nhân của bạn.

Giả sử bạn muốn sử dụng WordNet làm nguồn của bạn cho các từ liên quan và bạn muốn nhận danh sách các từ có liên quan đến "grok" ở định dạng JSON.Đây là cách:

  1. Tra cứu "grok" trên WordNet để lấy URL:

    http://wordnetweb.princeton.edu/perl/webwn?s=grok

  2. Kiểm tra các yếu tố (s) có chứa các từ liên quan (<ul> trong trường hợp này) để lấy XPath.

  3. Sử dụng các thông tin mà bạn thu thập được trong các bước 1-2 để xây dựng tuyên bố YQL của bạn trong YQL Console:

    select * from html where url="http://wordnetweb.princeton.edu/perl/webwn?s=grok" and xpath="//ul"

  4. Nhấp vào nút 'JSON' để định dạng nội dung trích như JSON trong phản ứng . Theo tùy chọn, bạn cũng có thể bỏ chọn "Chẩn đoán" để loại trừ dữ liệu chẩn đoán và giảm kích thước của phản hồi JSON.

  5. Nhấp vào nút 'Kiểm tra' để xem trước nội dung được trích xuất. Bạn sẽ nhận thấy rằng nội dung được định dạng là JSON, với các từ liên quan được lưu trữ trong một mảng các đối tượng. Dữ liệu trả về không hoàn hảo vì nó cũng có một số nhiễu trắng (nội dung bạn không cần), nhưng nó hoàn toàn khả thi.

Nếu bạn hài lòng với kết quả thì URL "dịch vụ web" được cung cấp cho bạn ở cuối trang trong "THE REST QUERY". Bạn có thể sử dụng URL này trong cuộc gọi $.ajax() của mình - bạn chỉ cần thay thế "grok" trong URL bằng bất kỳ từ nào bạn muốn tra cứu.

LƯU Ý: Nếu biểu mẫu web ở bước 1 sử dụng POST thay vì GET, thì cũng có thể scrape the results of a form POST.

Tuy nhiên, có một số hạn chế với phương pháp này. Những người chính là:

  • Tùy thuộc vào điều gì ngoài tầm kiểm soát của bạn, điều này không bao giờ là điều tốt. Ví dụ: nếu cấu trúc HTML thay đổi, thì truy vấn của bạn có thể sẽ bị hỏng.

  • Thông thường đối tượng JSON được trả về sẽ phức tạp hơn bạn muốn, yêu cầu thêm logic xử lý hậu kỳ để có được dữ liệu chính xác mà bạn muốn.

Các vấn đề liên quan