如何解决多语言和ICU返回不可忽视的UTF-8问题
我遇到了无法解决的问题,部分原因是我真的不明白它为什么会出现。我有一个来自 Spotify 的数据集,我想使用多语言来确定艺术家和歌曲的来源。是的,我知道这是一个不确定的练习,因为艺术家的名字可能用英文给出,即使他们是中文,例如。例如。周杰伦,McHotDog(真名周杰伦和哈狗帮)这就是为什么我也想检查歌曲名称的原因,因为它们通常是原始语言。
我的第一次尝试是使用 langdetect,但结果不够好,而且速度很慢。数据集有 160 000 行,整个过程耗时 21 小时!!
所以,经过很多痛苦(我使用 Windows)之后,我设法安装了 polyglot 和 polyglot.Detector 模块并提供了这些数据
artists \
0 Carl Woitschach
1 Robert Schumann,Vladimir Horowitz
2 Seweryn Goszczyński
3 Francisco Canaro
4 Frédéric Chopin,Vladimir Horowitz
... ...
169904 DripReport,Tyga
169905 Leon Bridges,Terrace Martin
169906 Kygo,Oh Wonder
169907 Cash Cash,Andy Grammer
169908 Ingrid Andress
Title year
0 Singende Bataillone 1. Teil 1928
1 Fantasiestücke,Op. 111: Più tosto lento 1928
2 Chapter 1.18 - Zamek kaniowski 1928
3 Bebamos Juntos - Instrumental (Remasterizado) 1928
4 Polonaise-Fantaisie in A-Flat Major,Op. 61 1928
... ... ...
169904 Skechers (feat. Tyga) - Remix 2020
169905 Sweeter (feat. Terrace Martin) 2020
169906 How Would I KNow 2020
169907 I Found You 2020
169908 More Hearts Than mine 2020
到下面的代码
import icu
Spotify['artists'] = Spotify['artists'].astype(str)
Spotify['Artist origin with reliability'] = Spotify['artists'].apply(lambda x: Detector(x,quiet=True))
Spotify['Artist Language'] = Spotify['Artist origin with reliability'].apply(lambda x: icu.Locale.getdisplayName(x.language.locale))
Spotify['Artist Language Confidence'] = Spotify['Artist origin with reliability'].apply( lambda x: x.language.confidence)
Spotify['Title'] = Spotify['Title'].astype(str)
Spotify['Title origin with reliability'] = Spotify['Title'].apply(lambda x: Detector(x,quiet=True))
Spotify['Title Language'] = Spotify['Title origin with reliability'].apply(lambda x: icu.Locale.getdisplayName(x.language.locale))
Spotify['Title Language Confidence'] = Spotify['Title origin with reliability'].apply( lambda x: x.language.confidence)
只得到以下错误
error: input contains invalid UTF-8 around byte 7 (of 19)
potify['Title'] = Spotify['Title'].astype(str)
Spotify['Title origin with reliability'] = Spotify['Title'].apply(lambda x: Detector(x,quiet=True))
Spotify['Title Language'] = Spotify['Title origin with reliability'].apply(lambda x: icu.Locale.getdisplayName(x.language.locale))
Spotify['Title Language Confidence'] = Spotify['Title origin with reliability'].apply( lambda x: x.language.confidence)
因为它可以很好地确定艺术家。一开始,我以为是汉字的问题,其实不是因为Spotify['artists']
栏有中文艺人名字。
所以,我想问你的问题是:
感谢您的任何意见。 仅供参考:我的目标是能够查看各国歌曲的流行度,因为亚洲音乐在此数据集中的代表性不足,因为它针对的是代表性过度的艺术家,并且没有考虑到 Spotify大多数亚洲人无法使用(而是使用酷狗和QQ音乐)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。