Nó được phát âm là GIF

Nó được phát âm là GIF

Nút nguồn: 3043181

Khi kỳ nghỉ lễ đang đến gần và một người ghi chép Hackaday được bảo vệ khỏi những cơn bão Đại Tây Dương đang ập đến trong ngôi nhà ấm cúng của mình, đã đến lúc cô ấy phải xem xét những điều cơ bản về nghề của mình. Viết, đánh vần và tiếng Anh; những vấn đề như tại sao người Mỹ có cách viết tiếng Anh khác với người Anh, nhưng có lẽ quan trọng nhất đối với độc giả Hackaday; nó là “gif” hay là “jif”? Câu này hoặc câu đùa về cách viết có thể được coi là câu click rõ ràng, nhưng thay vào đó, chúng chỉ là một công cụ để đi sâu vào nghiên cứu ngôn ngữ. Làm cách nào để chúng ta quyết định các quy ước trong ngôn ngữ của mình và liệu chúng ta có nên quan tâm quá nhiều đến chúng không?

Đừng tin mọi điều bạn đọc ở trường

Hình ảnh một lớp học ở Mỹ năm 1004
Không phải mọi thứ bạn học được ở đây đều đáng để bạn nắm giữ. Harrison Keely, CC BY 4.0.

Chúng ta được gửi đến trường để học nhiều điều. Trong thời gian đó, chúng ta bị tước đoạt tự do khi hàng loạt người lớn cố gắng hết năm này đến năm khác để nhồi nhét vào đầu chúng ta những sự thật. Một số trong đó chúng tôi thấy thú vị và những phần khác thì không nhiều, nhưng đối với phần lớn, chúng tôi không muốn tự mình suy nghĩ mà thay vào đó phải học thuộc lòng một bộ chương trình giảng dạy cố định.

Vì vậy, trong khi các nhà văn phải tự mình khám phá ra rằng tiếng Anh là một ngôn ngữ không ngừng phát triển mà qua đó họ có thể thoát khỏi những giới hạn nhân tạo mà trường học đã áp đặt cho họ, thì có quá nhiều người vẫn ngại đặt đầu mình lên trên lan can ngôn ngữ.

Kết quả là những người sợ di chuyển bằng ngôn ngữ nhận thấy những sai lệch so với các quy tắc sẽ bị chỉ trích, và chúng ta thậm chí còn tìm ra những cuộc Thánh chiến ngôn ngữ của riêng mình để chiến đấu. Ví dụ được đề cập ở trên về “gif” so với “jif” là một ví dụ tuyệt vời, liệu bạn có phát âm nó bằng chữ “G” cứng vì đó là cách hầu hết mọi người nói hay như thể nó là chữ “J” có thực sự quan trọng không? bởi vì người tạo ra định dạng tập tin đã nói như vậy? Không hẳn, bởi vì tiếng Anh là ngôn ngữ đang phát triển trong tay của những người nói nó chứ không phải của những người viết sách ở trường.

Đáng buồn thay, đây không phải là lúc để vui mừng, bởi vì ngay cả khi một số quy tắc đó có thể thay đổi theo thời gian, thì nó cũng không phải là miễn phí cho tất cả mọi người. Ngôn ngữ phải có thể hiểu được lẫn nhau, chúng ta không thể đơn giản tạo ra nó khi chúng ta tiến hành. Các chuyên gia áp dụng cái mà họ gọi là phương pháp mô tả, trong đó họ cho bạn biết cách bạn sử dụng ngôn ngữ, trái ngược với việc hạn chế cách bạn sử dụng ngôn ngữ. nên đang sử dụng nó. Họ thực hiện điều này thông qua phân tích thống kê về khối văn bản lớn, nội dung văn bản, để xem hình thức nào thu hút được nhiều sự chú ý nhất. Và đây chính là lúc điều này trở nên thú vị, bởi vì việc phân tích ngôn ngữ trên quy mô lớn có thể cho bạn biết những điều bạn chưa biết về một chủ đề mà bạn nghĩ rằng bạn biết rất nhiều.

Tại sao tôi không phải là người phát minh ra ngôn ngữ học tính toán

Một mô hình Raspberry Pi b nằm trên vỏ ổ cứng USB
Chiếc Raspberry Pi và ổ cứng đầy bụi này nằm sau TV của tôi trong khoảng một thập kỷ để xử lý văn bản từ nguồn cấp dữ liệu RSS

Tôi bắt đầu làm quen với phân tích ngôn ngữ khoảng mười lăm năm trước, khi tôi đang nỗ lực cải thiện khả năng hiển thị của một trang web rất lớn trên công cụ tìm kiếm. Hồi đó, đây không phải là thế giới mờ ám của việc thao túng công cụ tìm kiếm mờ ám, thay vào đó tôi ở đó để cải thiện đáng kể nội dung của trang web và nói tóm lại, làm cho nó trở nên thú vị hơn rất nhiều đối với cả con người và công cụ tìm kiếm. Trong nỗ lực này, một chút phân tích văn bản cực kỳ hữu ích và trước khi tôi biết điều đó, một vài tập lệnh PHP đơn giản để sắp xếp văn bản đã trở thành một bộ hoàn chỉnh.

Tôi đã không biết rằng đó đã là một lĩnh vực, đã phát minh ra toàn bộ chủ đề ngôn ngữ học tính toán cho chính tôi, và mặc dù bây giờ tôi biết rằng công việc đó kém hiệu quả một cách buồn cười, nhưng nó đã mang lại hiệu quả và giúp cho tôi và chủ sở hữu trang web biết họ đang ở đâu. đã sai lầm.

Sở thích phân tích ngôn ngữ, nó đã trở thành một trong những dự án đã ở lại với tôi trong nhiều năm khi tôi thỉnh thoảng quay lại với nó khi niềm đam mê của tôi ngày càng giảm và bộ công cụ ban đầu của tôi đã phát triển thành một thứ gì đó rất lớn. hữu dụng hơn. Và đó chính là mục đích của việc viết về nó ở đây, bởi vì nó không có gì quá khó khăn cả. Nếu tôi có thể làm được thì bạn cũng có thể làm được, vì vậy thật đáng để thử mô tả nó.

Để xây dựng một kho văn bản để phân tích, trước tiên cần phải bắt đầu bằng một số văn bản. Tôi đặc biệt quan tâm đến dữ liệu chuỗi thời gian cũng như ngôn ngữ, vì vậy tôi đã lấy càng nhiều nguồn cấp dữ liệu RSS càng tốt mà tôi có thể tìm thấy làm nguồn của mình. Điều này cung cấp cho tôi nguồn văn bản mới không bao giờ cạn kiệt để thêm vào phân tích của mình và công cụ làm việc của tôi là Raspberry Pi với ổ cứng USB lớn, âm thầm dành một phần thời gian trong ngày để tìm nạp các câu chuyện và xử lý chúng.

Vì vậy, đối mặt với một đoạn văn bản mới được truy xuất, bước đầu tiên của tôi là gì? Trước bất cứ điều gì khác, để loại bỏ HTML không liên quan và hành vi của trang web, một điều từng gây khó chịu lớn cho các quy tắc cho đến khi tôi phát hiện ra Lynx có tùy chọn dòng lệnh -dump thực hiện tất cả công việc nặng nhọc. Sau đó, đã đến lúc chia câu bằng các dấu phân cách câu như dấu chấm và dấu chấm hỏi, đồng thời chia câu theo từ thành một mảng. Sau đó, tôi có thể xem từng chữ một và xử lý những gì tôi tìm thấy trong kho dữ liệu của mình.

Làm thế nào để bạn nhanh chóng tìm ra một từ trong một tỷ?

Khi bạn có vài nghìn điểm dữ liệu, sẽ có rất nhiều lựa chọn về việc lưu trữ dữ liệu. Ví dụ, một cơ sở dữ liệu SQL là một ý tưởng tuyệt vời. Nhưng một kho văn bản phát triển đến kích thước khổng lồ và nhanh chóng bỏ lại các phương pháp lưu trữ thông thường. Có thể có một số phần mềm tuyệt vời có khả năng xử lý hàng tỷ trường hợp từ nhưng tôi chưa bao giờ tìm thấy nó, vì vậy tôi đã chọn thứ gì đó được tích hợp trong hệ thống tệp của mình. Tôi sẽ sử dụng đường dẫn hệ thống tệp làm truy vấn, tạo cây thư mục gồm các từ mà tôi có thể truy vấn chỉ bằng cách nhập vào đường dẫn.

Biểu đồ về sự cố "chi tiêu" và "cắt giảm" trên tin tức Anh đầu năm 2014
Rất nhiều tệp JSON nhỏ bé tạo ra một biểu đồ rất nhanh

Vì vậy, khi tôi lướt qua các từ trong câu, tôi quan tâm đến tần suất và cách kết hợp của chúng, tức là những từ xuất hiện bên cạnh. Vì vậy, với mỗi từ, tôi sẽ tạo một thư mục có tệp JSON bên trong để ghi lại sự xuất hiện của nó và trong thư mục đó, tôi sẽ tạo một thư mục con cho từ sau với tệp JSON tương ứng. Vì vậy, chẳng hạn, tôi có thể tìm thấy mức độ phổ biến của từ “Neil” bằng cách mở JSON trong thư mục /neil/ và tìm mức độ phổ biến của cụm từ “Neil Armstrong” trong /neil/armstrong/. Tôi cũng có thể so sánh sự xuất hiện tương đối của Neils Armstrong và Young, bằng cách nhìn vào cả /neil/armstrong/ và /neil/young/. Điều thú vị về cách tiếp cận hệ thống tệp này là tập lệnh xử lý phía máy chủ, vẫn bằng PHP, rất đơn giản và ứng dụng khách của tôi có thể là một số Javascript trong trình duyệt sẽ truy xuất tất cả các JSON đó trong thời gian thực từ hệ thống tệp.

Cái hay của việc có hàng tỷ từ phân tích tiếng Anh chỉ bằng một cú click chuột là tôi có thể dễ dàng kiểm tra xem phiên bản nào phù hợp hơn của một cụm từ, mức độ phổ biến của một cụm từ phù du và thậm chí cả mức độ phổ biến tương đối của các nhân vật của công chúng như các chính trị gia. Nó giống như việc tôi có người xác minh sự thật ngôn ngữ của riêng mình mà không cần phải dựa vào những gì người khác nói với tôi, điều này có thể rất hữu ích trong công việc của tôi. Tất nhiên, nó cũng có những hạn chế, ví dụ như thực hiện bất kỳ công việc nào với một cây gồm hàng triệu thư mục con và các tệp JSON nhỏ sẽ trở nên rất tẻ nhạt. Việc tạo tarball của cấu trúc dữ liệu kích thước trung bình cũng mất vài ngày, nghĩa là việc di chuyển nó sang đĩa mới đòi hỏi phải lập kế hoạch.

Đây có thể không phải là cách thông thường để mô tả một dự án cá nhân trên Hackaday, nhưng nó bao gồm thời gian phát triển và tiến bộ công nghệ không kém bất kỳ công việc phần cứng nào của tôi. Nếu bạn muốn theo bước tôi thì tôi e rằng tôi sẽ ngại phát hành mớ hỗn độn PHP và Javascript cũ không đúng định dạng của mình, nhưng vì chức năng của nó đã được mô tả khá rõ ở trên nên tôi nghĩ hầu hết các bạn đều có thể viết một cái bản thân bạn nếu bạn hướng tâm trí vào nó. Ngay cả khi bạn không biết, tôi hy vọng điều này đã mang lại cho bạn cái nhìn sâu sắc về cách hoạt động của máy phân tích kho ngữ liệu và có thể cho bạn biết những điều bạn chưa biết, đồng thời bạn sẽ làm theo lời khuyên của tôi là đừng nghe tất cả những gì giáo viên dạy bạn.

Dấu thời gian:

Thêm từ Hack một ngày