2017-07-01 36 views
5

Nếu tôi có chuỗi văn bản được vector hóa, tôi nên xử lý các số bên trong nó như thế nào? Hoặc nếu tôi nuôi một mạng nơron với các con số và lời nói, làm sao tôi có thể giữ các con số dưới dạng số?Cách xử lý các số bên trong chuỗi văn bản khi vector hóa từ?

Tôi đang lên kế hoạch tạo từ điển cho tất cả các từ của mình (as suggested here). Trong trường hợp này tất cả các chuỗi sẽ trở thành mảng của các số. Tôi nên xử lý các ký tự là số như thế nào? làm thế nào để xuất ra một véc tơ mà không kết hợp chỉ mục từ với ký tự số?

Số chuyển đổi thành chuỗi có làm suy yếu thông tin tôi cung cấp mạng không?

+0

Trong nhiều từ ứng dụng không tồn tại trong từ điển, được chuyển đổi thành ''. Trong cùng một cách, tùy thuộc vào ứng dụng của bạn, nó có thể thuận tiện để chuyển đổi tất cả các số thành một mã thông báo đặc biệt, như ''. –

Trả lời

2

Liên kết bạn cung cấp cho thấy mọi thứ do một số .split(' ') được lập chỉ mục - từ, nhưng cũng có thể là số, có thể là mặt cười, aso. (Tôi vẫn sẽ chăm sóc các dấu chấm câu). Trừ khi bạn có nhiều kiến ​​thức hơn về dữ liệu của bạn hoặc vấn đề của bạn, bạn có thể bắt đầu với điều đó.

EDIT

Ví dụ nghĩa bằng chuỗi của bạn và mã của họ:

corpus = {'my car number 3'} 
dictionary = {} 
i = 1 
for tweet in corpus: 
    for word in tweet.split(" "): 
    if word not in dictionary: dictionary[word] = i 
    i += 1 
print(dictionary) 
# {'my': 1, '3': 4, 'car': 2, 'number': 3} 
+0

Nhưng hãy tưởng tượng tôi có một từ "xe hơi" được chỉ mục '3' trong từ điển của tôi. Nếu tôi cũng có số '3' trong văn bản (trong một cụm từ như' Số ô tô 3'), không có ý nghĩa gì khi cho mạng vào một vectơ với các số lặp đi lặp lại sai như [12, ** 3 **, 11, ** 3 **] có thể được hiểu là 'Ô tô số ô tô'. – Rikard

+0

Bạn không có số '3', bạn có chuỗi * *" "3", có thể được lập chỉ mục bởi bất kỳ số nào. – user1735003

+0

Nhưng điều đó loại bỏ khỏi đầu vào _Type_, là một số là chính thông tin. – Rikard

1

Mở rộng thảo luận của bạn với @ user1735003 - Cho phép xem xét cả hai cách số đại diện:

  1. Xử lý nó dưới dạng chuỗi và xem nó như một từ khác và gán một ID cho nó khi tạo một từ điển. Hoặc
  2. Chuyển đổi các số thành từ thực tế: '1' trở thành 'một', '2' thành 'hai' v.v.

Trường hợp thứ hai có thay đổi ngữ cảnh không ?. Để xác minh nó, chúng ta có thể tìm thấy sự giống nhau của hai biểu diễn sử dụng word2vec. Điểm số sẽ cao nếu họ có bối cảnh tương tự.

Ví dụ, 1one có một số điểm tương đồng là 0,17, 2two có một số điểm giống nhau của 0.23. Họ dường như cho rằng bối cảnh của cách chúng được sử dụng là hoàn toàn khác nhau.

Bằng cách xử lý những con số như một từ khác, bạn không thay đổi bối cảnh nhưng bằng cách thực hiện bất kỳ chuyển đổi khác về những con số này, bạn không thể đảm bảo nó cho tốt hơn. Vì vậy, tốt hơn là để nó không bị ảnh hưởng và coi nó như một từ khác.

Note: Cả word-2-vecglove được đào tạo bằng cách xử lý các con số như dây đàn (trường hợp 1).

0

Bài viết sau có thể hữu ích: http://people.csail.mit.edu/mcollins/6864/slides/bikel.pdf

Cụ thể, trang 7.

Trước khi họ sử dụng một thẻ <unknown> họ cố gắng để thay thế sự kết hợp biểu tượng chữ và số với chung thẻ tên mẫu, ví dụ như:

FourDigits (good for years) 

Tôi đã cố gắng để thực hiện nó và nó đã cho kết quả tuyệt vời.

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