2023年2月

一个正在开发中令人兴奋的新代码编辑器,基于其自己的 GUI 框架。

Meet ecode: An Upcoming Modern, Lightweight Code Editor With a Brand New GUI Framework

如果你看看周围的开源代码编辑器,有几个有前途的新项目可能会挑战 Visual Studio Code 的地位。

当然,这可能不会很快发生。但对支持新项目持乐观态度也无妨。

我们最近在这里介绍了其中的一些选择:

现在,我偶然发现了另一个编辑器,“ecode”。这个项目的作者提到,它从 Lite XL 等编辑器中获得了灵感。

有什么不同?

  • 它建立在其新的 GUI 框架 eepp 之上,该框架专注于提供一个丰富的用户界面。
  • 虽然它的目标是使用最少的资源,但 ecode 的理念针对的是有 SSD、高核心数和良好的 GPU 加速的现代硬件系统。
  • 该代码编辑器可以被编译为在任何现代浏览器中运行。然而,目前的重点并不在网页版的开发上。

ecode official screenshot

这听起来不错。那么,让我们看一看。

? 该项目正在大力开发中。你不应该在日常工作中依赖这个工具。

ecode 的特点

ecode

ecode 是一个功能强大的编辑器,从一开始就有所有的基本功能。

当然,它有计划随着开发的进展增加更多的东西。就目前而言,这里有一些关键的亮点:

  • 可移植
  • 语法高亮
  • 终端支持
  • 自动补全
  • 可定制的颜色方案
  • 可定制的键盘绑定
  • LSP 支持
  • 缩略视图 Minimap
  • 插件管理器
  • 深色和浅色模式
  • 各种类型的分割视图以适应不同的工作流程

我在 Linux Mint 上简单地试了一下这个编辑器,它看起来确实是正在开发中。

但是,即使在其早期阶段,它也支持广泛的语言和相应的语法高亮。

ecode options

你可以从一组预定义的主题中快速定制编辑器的主题。

对于编写大量代码(冗长的片段)并需要快速浏览的用户来说,缩略视图将非常方便。

最初,当我在一个空白区域右键点击时,该应用崩溃了。但是,随着下一个版本 0.4.1(在发表这篇文章的时候)的更新,它很快就被修复了。所以,我想说开发进展似乎很有希望

下载 ecode

你可以尝试一下 在线演示 来快速测试一些选项。

有一个可用于所有 Linux 发行版的 AppImage 软件包。也有用于 macOS 和 Windows 的软件包。

你可以从它的 GitHub 发布页 获得这些包,或者探索它的 源码

下载 ecode

? 有这么多有前途的新代码编辑器在开发中,你认为我们会对微软的 VS Code 有一个好的竞争吗?


via: https://news.itsfoss.com/ecode-editor/

作者:Ankush Das 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文将帮助你理解 情感分析 sentiment analysis 的概念,并且学习如何使用机器学习进行情感分析。我们使用了不同的机器学习算法进行情感分析,然后将各个算法的准确率结果进行比较,以确定哪一种算法最适合这个问题。

情感分析是自然语言处理(NLP)中的一个重要的内容。情感指的是我们对某一事件、物品、情况或事物产生的感觉。情感分析是一个从文本中自动提取人类情感的研究领域。它在上世纪 90 年代初才慢慢地开始发展起来。

本文将让你明白如何将机器学习(ML)用于情感分析,并比较不同机器学习算法的结果。本文的目标不在于研究如何提高算法性能。

如今,我们生活在一个快节奏的社会中,所有的商品都能在网上购买到,每个人都可以在网上发表自己的评论。而一些商品的负面网络评论可能会损害公司的声誉,从而影响公司的销售额。因此对公司来说,通过商品评论来了解客户真正想要什么变得非常重要。但是这些评论数据太多了,无法一个个地手动查看所有的评论。这就是情绪分析诞生的缘由。

现在,就让我们看看如何用机器学习开发一个模型,来进行基本的情绪分析吧。

现在就开始吧!

获取数据

第一步是选择一个数据集。你可以从任何公开的评论中进行选择,例如推文或电影评论。数据集中至少要包含两列:标签和实际的文本段。

下图显示了我们选取的部分数据集。

Figure 1: Data sample

接下来,我们导入所需的库:

import pandas as pd
import numpy as np
from nltk.stem.porter import PorterStemmer
import re
import string

正如你在上面代码看到,我们导入了 NumPyPandas 库来处理数据。至于其他库,我们会在使用到它们时再说明。

数据集已准备就绪,并且已导入所需的库。接着,我们需要用 Pandas 库将数据集读入到我们的项目中去。我们使用以下的代码将数据集读入 Pandas 数据帧 DataFrame 类型:

sentiment_dataframe = pd.read_csv(“/content/drive/MyDrive/Data/sentiments - sentiments.tsv”,sep = ‘\t’)

数据处理

现在我们的项目中已经导入好数据集了。然后,我们要对数据进行处理,以便算法可以更好地理解数据集的特征。我们首先为数据集中的列命名,通过下面的代码来完成:

sentiment_dataframe.columns = [“label”,”body_text”]

然后,我们对 label 列进行数值化:negative 的评论替换为 1,positive 的评论替换为 0。下图显示了经过基本修改后的 sentiment_dataframe 的值。

Figure 2: Data frame with basic modifications

准备好特征值、目标值

下一步是数据的预处理。这是非常重要的一步,因为机器学习算法只能理解/处理数值形数据,而不能理解文本,所以此时要进行特征抽取,将字符串/文本转换成数值化的数据。此外,还需要删除冗余和无用的数据,因为这些数据可能会污染我们的训练模型。我们在这一步中去除了噪声数据、缺失值数据和不一致的数据。

对于情感分析,我们在数据帧中添加特征文本的长度和标点符号计数。我们还要进行词干提取,即将所有相似词(如 “give”、“giving” 等)转换为单一形式。完成后,我们将数据集分为两部分:特征值 X 和 目标值 Y。

上述内容是使用以下代码完成的。下图显示了执行这些步骤后的数据帧。

Figure 3: Data frame after the division of the data set

def count_punct(text):
   count = sum([1 for char in text if char in string.punctuation])
   return round(count/(len(text) - text.count(“ “)),3)*100
 
tokenized_tweet = sentiment_dataframe[‘body_text’].apply(lambda x: x.split())
stemmer = PorterStemmer()
tokenized_tweet = tokenized_tweet.apply(lambda x: [stemmer.stem(i) for i in x])
for i in range(len(tokenized_tweet)):
   tokenized_tweet[i] = ‘ ‘.join(tokenized_tweet[i])
sentiment_dataframe[‘body_text’] = tokenized_tweet
sentiment_dataframe[‘body_len’] = sentiment_dataframe[‘body_text’].apply(lambda x:len(x) - x.count(“ “))
sentiment_dataframe[‘punct%’] = sentiment_dataframe[‘body_text’].apply(lambda x:count_punct(x))
X = sentiment_dataframe[‘body_text’]
y = sentiment_dataframe[‘label’]

特征工程:文本特征处理

我们接下来进行文本特征抽取,对文本特征进行数值化。为此,我们使用 计数向量器 CountVectorizer ,它返回词频矩阵。

在此之后,计算数据帧 X 中的文本长度和标点符号计数等特征。X 的示例如下图所示。

Figure 4: Sample of final features

使用的机器学习算法

现在数据已经可以训练了。下一步是确定使用哪些算法来训练模型。如前所述,我们将尝试多种机器学习算法,并确定最适合情感分析的算法。由于我们打算对文本进行二元分类,因此我们使用以下算法:

  • K-近邻算法(KNN)
  • 逻辑回归算法
  • 支持向量机(SVMs)
  • 随机梯度下降(SGD)
  • 朴素贝叶斯算法
  • 决策树算法
  • 随机森林算法

划分数据集

首先,将数据集划分为训练集和测试集。使用 sklearn 库,详见以下代码:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.20, random_state = 99)

我们使用 20% 的数据进行测试,80% 的数据用于训练。划分数据的意义在于对一组新数据(即测试集)评估我们训练的模型是否有效。

K-近邻算法

现在,让我们开始训练第一个模型。首先,我们使用 KNN 算法。先训练模型,然后再评估模型的准确率(具体的代码都可以使用 Python 的 sklearn 库来完成)。详见以下代码,KNN 训练模型的准确率大约为 50%。

from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
model.score (X_test,y_test)

0.5056689342403629
逻辑回归算法

逻辑回归模型的代码十分类似——首先从库中导入函数,拟合模型,然后对模型进行评估。下面的代码使用逻辑回归算法,准确率大约为 66%。

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit (X_train,y_train)
model.score (X_test,y_test)

0.6621315192743764
支持向量机算法

以下代码使用 SVM,准确率大约为 67%。

from sklearn import svm
model = svm.SVC(kernel=’linear’)
model.fit(X_train, y_train)
model.score(X_test,y_test)

0.6780045351473923
随机森林算法

以下的代码使用了随机森林算法,随机森林训练模型的准确率大约为 69%。

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
model.score(X_test,y_test)

0.6938775510204082
决策树算法

接下来,我们使用决策树算法,其准确率约为 61%。

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model = model.fit(X_train,y_train)
model.score(X_test,y_test)

0.6190476190476191
随机梯度下降算法

以下的代码使用随机梯度下降算法,其准确率大约为 49%。

from sklearn.linear_model import SGDClassifier
model = SGDClassifier()
model = model.fit(X_train,y_train)
model.score(X_test,y_test)

0.49206349206349204
朴素贝叶斯算法

以下的代码使用朴素贝叶斯算法,朴素贝叶斯训练模型的准确率大约为 60%。

from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)
model.score(X_test,y_test)

0.6009070294784581

情感分析的最佳算法

接下来,我们绘制所有算法的准确率图。如下图所示。

Figure 5: Accuracy performance of the different algorithms

可以看到,对于情感分析这一问题,随机森林算法有最佳的准确率。由此,我们可以得出结论,随机森林算法是所有机器算法中最适合情感分析的算法。我们可以通过处理得到更好的特征、尝试其他矢量化技术、或者使用更好的数据集或更好的分类算法,来进一步提高准确率。

既然,随机森林算法是解决情感分析问题的最佳算法,我将向你展示一个预处理数据的样本。在下图中,你可以看到模型会做出正确的预测!试试这个来改进你的项目吧!

Figure 6: Sample predictions made


via: https://www.opensourceforu.com/2022/09/how-to-analyse-sentiments-using-machine-learning/

作者:Jishnu Saurav Mittapalli 选题:lkxed 译者:chai001125 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微软准备将 GPT-4 接入到必应搜索引擎

据称,微软正在努力将 OpenAI 的 ChatGPT 的更快版本(被称为 GPT-4)在未来几周内纳入它的必应搜索引擎。整合后,必应将使用 GPT-4 来回答搜索查询。GPT-4 和 ChatGPT 的主要区别在于速度,不像 ChatGPT 有时需要长达几分钟的时间来形成回应。通过使用 GPT-4,必应将能够为用户提供人性化的答案,而不是仅仅显示一个链接列表。

消息来源:Tech Crunch
老王点评:GPT-4 就准备这样悄悄亮相了?这条新闻有点不确定,或许是一个内测版 GPT-4?

Twitter API 将不再提供免费访问

Twitter 宣布,从 2 月 9 日开始它的 API 将不再支持免费访问,使用其 API 将必须付费。但其尚未披露付费计划。上个月 Twitter 修改了 API 规则,明确禁止 了开发者利用其 API 开发第三方客户端,大部分第三方 Twitter 客户端已经被 杀死 了。成千上万的开发者还使用 Twitter API 建立了有关天气和信息的机器人,这些都是有趣的业余项目,但在新的政策下,这些机器人都面临关闭。该公司还没有澄清它是否也计划终止对研究人员的免费 API 使用。

消息来源:Tech Crunch

老王点评:马某这是杀鸡取卵,着急还清他的收购贷款啊。还好,现在一些去中心化的 Twitter 替代品已经开始出现,除了长毛象,这两天还有个 Damus 开始刷屏票圈。

夹带个私货,已经开始测试 Damus 的朋友可以加 Ξ:///硬核老王: npub123eqjqdz2g5yw4vvz3ea6ws2ma0xls42jx3nqtzp4lcdk4jyh0zqwg426f

AI 图像合成模型会“记忆”一点点训练图像

研究发现利用对抗性攻击,可以从“稳定扩散”等潜在扩散人工智能图像合成模型中提取一小部分训练图像。它挑战了图像合成模型不记忆其训练数据的观点,以及训练数据如果不被披露就可能保持隐私的观点。研究人员在他们测试的 35 万张高概率记忆图片中只提取到 94 个直接匹配和 109 个感知近似匹配,记忆率大约为 0.03%。另外,他们发现 “记忆” 是近似的,因为人工智能模型不能产生训练图像完全相同的精确副本。

消息来源:Ars Technica
老王点评:虽然这个比例非常小,但是如果在大量使用的情况下,可能会带来一些监管和隐私的问题。也就是说,人们希望 AI 图像合成可以做到 “意会” 而不是 “拼合”。

体验为开源做出贡献的快乐。

难以用言语形容我在收到合并通知(如下图)时的喜悦,当然这要归功于现在我上的工程学校 AltSchool Africa

successful merge message

在此之前,我曾多次接触过开源的概念,了解了它在技术领域的重要性,甚至参加过开源会议(比如 OSCAFest)。我曾多次跃跃欲试,但当打开 GitHub 来想创建些东西时,冒名顶替综合症就会冒出来。

时间来到 2022 年 8 月 8 日星期一,当观看了 Bolaji 为开源做贡献的视频之后,我重新振奋起来。不过,想要把我学到的东西付诸实践,我注意到需要下面几个步骤:

步骤:

  1. 我要下定决心,做好为一个开源项目做出贡献的心理建设。
  2. 我要根据我的技能水平进行筛选,我从一个站点(Good First Issues)寻找我开始的第一个项目。我不停地往下翻看,直到找到了一个符合心意的项目。
  3. 我要确定自己掌握完成项目所需的 Git 和 GitHub 知识。

LCTT 译注:

Good First Issues” 这个网站主要是针对那些想为开源软件做贡献,但不知道从哪里开始或如何开始的开发者。通过为开发者提供过滤器,该网站使他们能够根据自己熟悉的编程语言来浏览和选择问题和存储库。此外,他们还可以选择他们想要解决的问题的类型。

项目

经过长时间查找,我终于找到了一个名为 确保没有缺失的 alt 属性 的项目。我所要做的,就是为网站上的图片提供描述性的 alt 值。图片的 alt 值有助于提高网站的辅助功能,这样屏幕阅读器就可以向视障人士提供图像的详细描述了。这很简单,对吧?是的,但假如我没有下定决心想要作出贡献,我就不会找到这项目,在我心中开源仍将是个神话。

我心潮澎湃,直到发现这个项目是来自 MDN 的。等等, MDN Mozzila 开发者网络 ?干和 Mozilla 的开发者一样的事儿?他们会合并我这么小儿科的贡献吗?冒名顶替综合症 又开始了。

在检查这个议题时,我看到有人已经在提交贡献了,于是我鼓起勇气开始翻阅项目的内容。阅读和理解这个项目颇花费了我一些时间,而另一个要克服的,就是清楚处理这个议题我要怎么做。

这个项目就像你想的那么简单。

于是,我挑选了两幅图片着手尝试。我给它们的 alt 属性赋值,提交我的更改,然后发出拉取请求。从提交请求到收到批准邮件的这段时间,我充满了自我怀疑。我要不要关闭拉取请求?这可是 MDN 啊。好吧,这甚至都不算编程…… 如果请求没有被合并怎么办?我恐怕再也不会想为开源做出贡献了。不过,所有的疑虑都在我看到审阅者发来的这些邮件时烟消云散:

拉取请求确认邮件

拉取请求被合并的通知邮件

做出贡献和请求被合并的祝贺邮件

我喜出望外,这激发了我去检查更多图片的热情,也给了我发请求解决其他议题所需的勇气。

议题分配邮件

总结

我希望你能从这篇文章中感受到以下几点:

  • 开源是面向所有人的。你在刚刚访问的那个网站上看到拼写错误了吗?你帮助订正了拼写错误,这就是为开源做出了贡献。
  • 没有任何技能是微不足道的。如你所见,我所做出的贡献,只需要对 HTML 最基本的了解。
  • 能阻止你做出贡献的只有你自己。
  • 要想让雪球滚起来,需要做的就只是提交第一个贡献。

我衷心希望你能从我的经历中获得什么,并且今天就付诸实践。这也就是我想贡献的另一个领域,那么,我们下一篇文章见,也祝你开源愉快!

这篇文章最初发布于 我的第一个拉取请求被合并,并经许可转载。


via: https://opensource.com/article/22/9/first-pull-request-merged

作者:Oluwaseun 选题:lkxed 译者:onionstalgia 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Kodi 20 版本增加了多项重要功能。

Kodi 20.0 "Nexus" Update Includes Support for AV1 Video and Steam Deck Controller

Kodi 是 Kodi 基金会开发的跨平台开源媒体播放器,提供了大量功能。

它的上一个主要版本是两年前发布的 Kodi 19 “Matrix”

Kodi “Nexus” 是改进后的主要版本,它提供了几个新功能和改进。

让我们来看看这些。

? Kodi 20 “Nexus” 更新了什么?

这次发布带来了很多新的特性,较为突出的有:

  • AV1 编解码支持
  • 增强的 PVR 支持
  • 更新后的数据抓取器
  • 多个修复和改进

kodi 20 nexus

AV1 编解码支持

Kodi 现在在 Linux 平台上支持开源的免版税的 AV1 编解码

通过 视频加速 API(VA-API)实现了解码 AV1 的硬件加速,并且还为视频输入流增加了 AV1 支持。

增强的 PVR 支持

通过 PVR 观看电视和收听广播也得到了许多改进,其中一些值得注意的改进包括:

  • 重新设计过的频道管理器。
  • 能够显示特定频道或录音的提供方。
  • 能够按提供方对频道和录音进行排序。
  • 支持只读录音。
  • 改进后的 EPG 搜索。
  • 自动清理缓存的 PVR 图像。
  • PVR 客户端插件的多实例支持。
  • Estuary 主题下的 PVR 体验调整。

更新后的数据抓取器

TVDB 电视节目抓取器已更新,以防止其在加载损坏的“视频流”和“信息标记视频”后出现问题。

?️ 建议旧版 Kodi 20 的用户更新到最新版本,避免使用此抓取器时出现问题。

此外,更新后的 Python 电视节目抓取器,解决了一个潜在的问题,即新的抓取器使用的 XML 格式与现有的程序不同的问题。

因此,当你向库中现有的电视节目添加新集时,即便你正在使用 NFO 文件,你也必须刷新节目以下载新集指南。

?️ 多个修复和改进

除此之外,Kodi 20 还提供了一些修复和改进,例如:

  • Steam Deck 控制器的内置支持。
  • 开始支持 NFSv4 的文件系统。
  • 默认支持光盘。
  • 使用通用缓冲区管理 API 时,能够设置使用 HDR 输出。
  • 解决了 DRMPrime 的一个问题。
  • 多个对于图文电视的支持。
  • 修复了单机游戏的黑屏问题。

要了解更多信息,请阅读 官方公告

? 下载 Kodi 20

Kodi 20 “Nexus” 可从 官方网站 及其 GitHub 仓库 获取。

在应用商店和官方软件库也可以获取到。

Kodi v21(代号:Omega)正在开发中。如果你想从这次发布中获得更多内容,请关注下一个版本。


via: https://news.itsfoss.com/kodi-20-nexus-release/

作者:Sourav Rudra 选题:lkxed 译者:natsumm 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

OpenAI 发布检测 AI 生成文本的工具

ChatGPT 的创造者 OpenAI 今天发布了一个免费的基于网络的工具,旨在帮助弄清某块文本是由人类还是机器写的。OpenAI 警告说,该工具并不完美,可能会有“误判和漏判”,不应该单独依靠新工具来确定文件的作者身份。它在大于 1000 字的文本样本和英语中效果最好,但它还不能区分人类和人工智能编写的计算机代码。

消息来源:Axios
老王点评:以子之矛,攻子之盾。我敢说,这个工具肯定会利用来改善 AI 的输出,使之更不容易识别出来。

万维网联盟以公益性非营利组织重启

万维网联盟(W3C)是 Web 发明人蒂姆·伯纳斯-李创立于 1994 年的行业组织,它为互联网制定了包括 HTML 和 CSS 等近 500 个开放标准,整个 Web 世界都是在此基础上发展起来的。W3C 的标准可以被任何人使用,而且由于 W3C 专利政策免收版税,所以不需要任何费用。2023 年伊始,W3C 联盟成立了一个新的符合美国 501(c)(3) 的公益性非营利组织。虽然蒂姆爵士已经逐渐退出了大多数 W3C 的决策,但在 W3C 董事会中为他保留了一个永久席位。

消息来源:W3C
老王点评:W3C 确实很有功绩,成为非营利组织后应该可以发挥更大的作用。

谷歌决定在 2024 年禁止第三方 Cookie

尽管存在争议和来自政府的审查,但这家广告公司仍打算继续推进其基于兴趣的广告主题 API。谷歌在报告中说,“在 2024 年第三季度,Chrome 浏览器将在两个月内逐步取消对第三方 Cookie 的支持。”此前,谷歌最早曾打算在 2022 年底前废弃对第三方 Cookie 的支持。为了取代第三方 Cookie,谷歌早在 2019 年就宣布了“隐私沙盒”技术,并正在开发一系列取代性技术,如主题 API、FLEDGE API、归属报告 API、私有状态令牌 API、第一方集 API 等等。谷歌坚持认为其广告技术工具可以在支持开放网络的同时促进隐私。

消息来源:The Register
老王点评:或许一部分初衷是好的,但是打击对手的心思怕也是有的,大部分数字广告商都还必须依赖第三方 Cookie。