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 [
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
\U0001f604Tấ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 csvDự đị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