Mã hóa biểu tượng cảm xúc python

Tôi đã cập nhật mã [tốt hơn] cho phép dễ dàng đếm biểu tượng cảm xúc trong các đối tượng chuỗi bằng Python, mã này có thể được tìm thấy trên GitHub của tôi. Tôi có hai lớp đếm trong một gói nhỏ được tải ở đó

Emoji [

Mã hóa biểu tượng cảm xúc python
Mã hóa biểu tượng cảm xúc python
Mã hóa biểu tượng cảm xúc python
], những biểu tượng cảm xúc phổ biến xuất hiện khi người dùng iPhone tìm thấy chúng vào năm 2011 với iOS 5 là một bộ ký tự khác ngoài ký tự chữ và số truyền thống và dấu chấm câu. Đây thực chất là một bảng chữ cái khác và khái niệm này sẽ hữu ích khi sử dụng biểu tượng cảm xúc trong Python. Biểu tượng cảm xúc KHÔNG phải là một phông chữ như Wingdings từ Windows95, chúng là các ký tự duy nhất không có chữ cái hoặc biểu tượng tương ứng. Nếu bạn có tài liệu hoặc trang web có phông chữ Wingding, bạn chỉ cần thay đổi phông chữ thành phông chữ Latinh điển hình để xem các ký tự thông thường mà phông chữ Wingding đại diện.

nền tảng kỹ thuật

Không gặp vấn đề về mã hóa kỹ thuật, biểu tượng cảm xúc được xác định bằng Unicode và UTF-8, có thể đại diện cho khoảng một triệu ký tự. Rất nhiều ứng dụng hoặc gói phần mềm mặc định là ASCII, chỉ mã hóa 128 ký tự điển hình. Một số IDE Python, gói viết csv hoặc phần mềm phân tích cú pháp mặc định hoặc dịch sang ASCII, vì vậy chúng không nhất thiết phải xử lý các ký tự biểu tượng cảm xúc đúng cách

Tôi đã viết một tập lệnh Python [hoặc 'gói' Python này] lấy các tweet được lưu trữ trong cơ sở dữ liệu MongoDB (sẽ nói thêm về điều đó sau) và đếm số lượng biểu tượng cảm xúc khác nhau trong kho văn bản tweet. Để đảm bảo Python hoạt động tốt với các biểu tượng cảm xúc, trước tiên, tôi đã tải dữ liệu bằng cách đảm bảo rằng tôi đã chỉ định mã hóa UTF-8 nếu không bạn sẽ gặp lỗi mã hóa này

UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 0: ordinal not in range(128)

Tôi đã tải một khóa biểu tượng cảm xúc mà tôi đã tạo bằng cách sử dụng tất cả các biểu tượng cảm xúc trong quá trình triển khai của Apple bằng cách tải mã này vào khung dữ liệu Pandas

emoji_key = pd.read_csv('emoji_table.txt', encoding='utf-8', index_col=0)

Nếu Python tải dữ liệu của bạn chính xác bằng mã hóa UTF-8, thì mỗi biểu tượng cảm xúc sẽ được coi là ký tự duy nhất riêng biệt, do đó, hàm chuỗi và biểu thức chính quy có thể được sử dụng để tìm biểu tượng cảm xúc trong các chuỗi khác, chẳng hạn như văn bản Twitter. Trong một số IDE, biểu tượng cảm xúc không hiển thị [Canopy] hoặc không hiển thị tốt [PyCharm]. Tôi đã khắc phục biểu tượng cảm xúc vô hình/lộn xộn bằng cách chạy tập lệnh trong ứng dụng đầu cuối của Mac OS X, ứng dụng này sẽ hiển thị biểu tượng cảm xúc. Python cũng có thể tạo chuỗi tuân thủ ASCII bằng cách sử dụng mã hóa thoát unicode

unicode_object.encode('unicode_escape')

Chuỗi mã hóa thoát sẽ hiển thị một cái gì đó như thế này

\U0001f604

Tất cả các IDE sẽ hiển thị chuỗi ASCII. Bạn sẽ cần giải mã nó từ lối thoát unicode để đưa nó trở lại đối tượng unicode. Cuối cùng, tôi đã có một khung dữ liệu Pandas chứa các đối tượng unicode. Để đảm bảo mã hóa chính xác đã được sử dụng trên tệp văn bản đầu ra, tôi đã sử dụng đoạn mã sau

 with open('emoji_out.csv', 'w') as f: 
    emoji_count.to_csv(f, sep=',', index = False, encoding='utf-8')  

Lớp truy cập biểu tượng cảm xúc

Tôi đã tạo một lớp bộ đếm biểu tượng cảm xúc bằng Python để đơn giản hóa quá trình đếm và tổng hợp số lượng biểu tượng cảm xúc. Mã [socialmediaparse] có trên GitHub của tôi cùng với tệp dữ liệu biểu tượng cảm xúc cần thiết để mã này có thể tải khóa khi phiên bản được tạo. Sử dụng gói này, bạn có thể liên tục gọi phương thức add_emoji_count() để thay đổi số lượng bên trong cho mỗi biểu tượng cảm xúc. Các kết quả có thể được lấy ra bằng cách sử dụng. dict, dict_total và. thuộc tính giỏ của ví dụ. Tôi đã viết điều này bởi vì nó sắp xếp và đơn giản hóa việc phân tích cho bất kỳ ứng dụng biểu tượng cảm xúc hoặc phương tiện truyền thông xã hội nào. Có thể tạo các đối tượng bộ đếm từ điển biểu tượng cảm xúc riêng biệt cho các nhóm tweet khác nhau mà ai đó muốn phân tích

import socialmediaparse as smp #loads the package

counter = smp.EmojiDict() #initializes the EmojiDict class

#goes through list of unicode objects calling the add_emoji_count method for each string
#the method keeps track of the emoji count in the attributes of the instance
for unicode_string in collection:
   counter.add_emoji_count(unicode_string)  

#output of the instance
print counter.dict_total #dict of the absolute total count of the emojis in corpus
print counter.dict       #dict of the count of strings with the emoji in corpus
print counter.baskets    #list of lists, emoji in each string.  one list for each string.

counter.create_csv(file='emoji_out.csv')  #method for creating csv

Dự định

MongoDB được sử dụng cho dự án này vì dữ liệu lưu trữ các tệp JSON rất tốt, không cần trình phân tích cú pháp hoặc trình ghi csv. Nó cũng có lợi thế là lưu trữ các chuỗi nguyên bản trong UTF-8. Nếu tôi sử dụng trình phân tích cú pháp csv StreamR của R, sẽ có nhiều lỗi mã hóa và hầu như không có biểu tượng cảm xúc nào trong dữ liệu. Có thể có cách giải quyết khả thi, nhưng MongoDB là cách dễ nhất mà tôi đã tìm thấy để làm việc với dữ liệu được mã hóa Twitter JSON, UTF-8

Làm cách nào để viết mã biểu tượng cảm xúc trong Python?

Mỗi biểu tượng cảm xúc được gán một mã Unicode duy nhất cho nó. Khi sử dụng Unicode với Python, thay thế "+" bằng "000" từ Unicode. Và sau đó đặt tiền tố Unicode bằng "\" . Ví dụ: U+1F605 sẽ được sử dụng làm \U0001F605.

UTF có

Biểu tượng cảm xúc cũng là các ký tự trong bảng chữ cái UTF-8 . 😄 là 128516.

Tôi nên sử dụng mã hóa nào cho biểu tượng cảm xúc?

biểu tượng cảm xúc yêu cầu 4 byte để mã hóa bằng cách sử dụng UTF-8 , giờ đây chúng tôi thấy 4 ký tự khi diễn giải tệp bằng mã hóa Windows-1258. Lựa chọn mã hóa ký tự sai có tác động trực tiếp đến những gì chúng ta có thể nhìn và hiểu bằng cách cắt xén các ký tự thành một mớ hỗn độn khó hiểu.