然語言在人工智能中扮演者重要的角色,我們平時使用的一些軟件中也會有機(jī)器人聊天的功能,但往往是從數(shù)據(jù)庫中抽取一些語言,它們的回答也令人啼笑皆非。而這項自然語言處理技術(shù)是微軟亞洲研究院的重點和優(yōu)勢技術(shù)所在,他們的研究成果機(jī)器人“小冰”還能夠?qū)懗鲈姼琛?/p>
人工智能包括3個層面,分別為運算智能、感知智能、 認(rèn)知智能、和創(chuàng)造智能。自然語言處理就屬于第三個層面,它是人工智能的一個重要分支,幫助分析、理解或生成自然語言,實現(xiàn)人與機(jī)器的自然交流,包括理解運用語言的能力,掌握運用知識的能力,以及在語言和知識的基礎(chǔ)上做推理。
在這項技術(shù)上,微軟將自然語言與中國文化相結(jié)合,根據(jù)中文自身的特征,微軟亞洲研究院相繼推出了微軟對聯(lián)、微軟字謎、微軟絕句等應(yīng)用,以及最近幾天引起熱議的小冰詩歌創(chuàng)作。關(guān)于對于小冰詩歌創(chuàng)作的評估體系,研究人員表示,這一點反而是比圍棋更難的地方;因為圍棋的規(guī)則是清晰的,而詩歌本身是一種主管性的審美判斷,因此我們不能講小冰的詩歌同一些名家名作進(jìn)行比較。
人工智能的發(fā)展超乎我們最開始對這項技術(shù)的期待,據(jù)說最近又要研發(fā)出會思考的機(jī)器人,這就意味著機(jī)器人將來或許能代替人類在多個領(lǐng)域工作,甚至和我們生活在一起,不過這項技術(shù)尚未成熟,而人類有多種能力是機(jī)器人無法取代的。
幾何時,在孩子們的童年還沒有被各類智能手機(jī)和電腦游戲所占領(lǐng)的年代,父母和長輩們會不時興致勃勃地把尚且年幼的孩子叫到跟前,出一些字謎讓他們猜,而后饒有興致地分享各類字謎的解法。隨著時代的車輪不斷向前,猜字謎這項有趣的中國傳統(tǒng)民間文化逐漸消失在了人們的視野中。現(xiàn)在,我們很難有機(jī)會在除了元宵節(jié)之外的日子體驗猜字謎游戲的樂趣。即便能夠體驗,現(xiàn)代的青年人恐怕在面對各類字謎時,也會顯得無從下手吧。
元宵節(jié)前夕,微軟亞洲研究院在已有的微軟對聯(lián)平臺上推出了一個新功能——微軟猜字謎。當(dāng)用戶輸入謎面后,系統(tǒng)自動分析謎面,而后迅速給出謎底。更有趣的是,這款系統(tǒng)還可以為用戶自動生成謎面。當(dāng)用戶輸入謎底(單個字)后,系統(tǒng)可自動生成若干謎面供用戶選擇。
字謎是中國文化獨有的內(nèi)容,是以一個或幾個漢字為謎底的謎語。這種謎語的編寫或是利用了漢字的造字規(guī)律,或是利用了漢字形、音、義某一方面的特點,既有趣味,又有知識內(nèi)涵。根據(jù)謎面的不同,字謎可分為:字形謎、字義謎、典故謎等多個類別。由于中國字義謎和典故謎的構(gòu)成更為復(fù)雜,此次微軟亞洲研究院推出的計算機(jī)自動猜字謎系統(tǒng)主要針對的是字形謎,即謎面是根據(jù)謎底(一個字)的字形而設(shè)計的。
這款字謎系統(tǒng)由微軟亞洲研究院自然語言計算組開發(fā),耗時四個月。開發(fā)這樣一個系統(tǒng),研究人員需要首先進(jìn)行大量的數(shù)據(jù)挖掘工作,并從收集到的大量字謎中挑選出字形謎。而后建模,用統(tǒng)計機(jī)器學(xué)習(xí)的方法對模型進(jìn)行訓(xùn)練,得到一個能將各類自然語言描述轉(zhuǎn)化為特定偏旁部首的優(yōu)化模型。最后,將得出的各類偏旁部首映射到有可能的字,即謎底。在這款字謎系統(tǒng)的頁面中,我們不僅在輸入字形謎的謎面后可以看到最佳答案,而且還可以看到推理的過程,這對于猜字謎的思維訓(xùn)練是非常有幫助的。
自然語言計算組負(fù)責(zé)人,微軟亞洲研究院首席研究員周明博士是機(jī)器翻譯和自然語言處理等領(lǐng)域的專家,曾主導(dǎo)了微軟對聯(lián)系統(tǒng)的開發(fā)。他表示:”猜字謎是在微軟對聯(lián)系統(tǒng)之后,我們對人工智能的又一個有意義的嘗試。這些創(chuàng)新集中體現(xiàn)了NLP
2.0的戰(zhàn)略思想,即對基于互聯(lián)網(wǎng)的平臺,對大數(shù)據(jù)進(jìn)行搜集、利用統(tǒng)計機(jī)器學(xué)習(xí)方法自動學(xué)習(xí)建立智能模型、然后快速上線獲得用戶反饋從而把用戶引入到創(chuàng)新的過程之中。猜字謎系統(tǒng)的水平也會不斷提升“。
當(dāng)然,推出這款基于字形謎的計算機(jī)自動猜字謎系統(tǒng)僅僅是個開始,微軟亞洲研究院的研究員們還將繼續(xù)深入研究,推出包括更多類型的字謎系統(tǒng),以及擴(kuò)展到字謎之外的其他類型的謎語。敬請期待!
兩年前的今天,我寫過一篇名為《用Python寫春聯(lián):抒寫最真誠的祝福和最美好的祈愿》(https://blog.csdn.net/xufive/article/details/104059396)的文章,吸引了很多書法愛好者的關(guān)注。該文用的是田英章老師的楷書,我在網(wǎng)上總共找到了1600個漢字,因此,春聯(lián)用字被限制在這1600個漢字的小字庫中。
當(dāng)下2022年新年的鐘聲即將敲響,過往的這篇舊文又再次被網(wǎng)友們翻出,每日瀏覽量超過5000人次。由于字庫過小,連很多常用字都沒有收入,很多朋友留言,要求擴(kuò)容字庫以及支持其他字體。我個人精力有限,同時受知識產(chǎn)權(quán)保護(hù)的限制,不可能制作完整的毛筆字庫。那么,能否借用現(xiàn)有的矢量字庫,滿足朋友們的要求呢?
經(jīng)過一番嘗試,發(fā)現(xiàn)操作系統(tǒng)自帶的某些矢量字庫,是可以作為毛筆字庫使用的。以下是簡單的演示代碼,僅供學(xué)習(xí)編程技術(shù)之用,絕無侵犯字體權(quán)利人之權(quán)力的故意,特此聲明。
選擇矢量字庫
雖然有很多方法可以幫你呈現(xiàn)出系統(tǒng)支持的所有字體文件,我建議最直接的方式是去查看操作系統(tǒng)的字體目錄。以Windows為例,我直接在C:\Windows\Fonts這個路徑下找到了“華文隸書”這個字庫文件,查看屬性可知,該文件名為STLITI.TTF。找到了喜歡的字庫文件,只需要將其全路徑文件名替換到代碼中的FONT_FILE常量即可,不需要做其他操作。
選擇一款喜歡的春聯(lián)背景圖案
還是以“龍鳳呈祥”這個圖案為例。如果換用其他的圖案,請確保圖案是.png格式(背景透明),且是方形的。同字體文件一樣,我們需要將這個背景圖案的全路徑文件名替換到代碼中的BG_FILE常量即可。
全部代碼總共70余行,使用方法請看注釋。
# -*- coding: utf-8 -*-
import os
import freetype
import numpy as np
from PIL import Image
FONT_FILE=r'C:\Windows\Fonts\STLITI.TTF'
BG_FILE=r'D:\temp\bg.png'
def text2image(word, font_file, size=128, color=(0,0,0)):
"""使用指定字庫將單個漢字轉(zhuǎn)為圖像
word - 單個漢字字符串
font_file - 矢量字庫文件名
size - 字號,默認(rèn)128
color - 顏色,默認(rèn)黑色
"""
face=freetype.Face(font_file)
face.set_char_size(size*size)
face.load_char(word)
btm_obj=face.glyph.bitmap
w, h=btm_obj.width, btm_obj.rows
pixels=np.array(btm_obj.buffer, dtype=np.uint8).reshape(h, w)
dx=int(face.glyph.metrics.horiBearingX/64)
if dx > 0:
patch=np.zeros((pixels.shape[0], dx), dtype=np.uint8)
pixels=np.hstack((patch, pixels))
r=np.ones(pixels.shape) * color[0] * 255
g=np.ones(pixels.shape) * color[1] * 255
b=np.ones(pixels.shape) * color[2] * 255
im=np.dstack((r, g, b, pixels)).astype(np.uint8)
return Image.fromarray(im)
def write_couplets(text, horv='V', quality='L', out_file=None, bg=BG_FILE):
"""寫春聯(lián)
text - 春聯(lián)字符串
bg - 背景圖片路徑
horv - H-橫排,V-豎排
quality - 單字分辨率,H-640像素,L-320像素
out_file - 輸出文件名
"""
size, tsize=(320, 128) if quality=='L' else (640, 180)
ow, oh=(size, size*len(text)) if horv=='V' else (size*len(text), size)
im_out=Image.new('RGBA', (ow, oh), '#f0f0f0')
im_bg=Image.open(BG_FILE)
if size < 640:
im_bg=im_bg.resize((size, size))
for i, w in enumerate(text):
im_w=text2image(w, FONT_FILE, size=tsize, color=(0,0,0))
w, h=im_w.size
dw, dh=(size - w)//2, (size - h)//2
if horv=='V':
im_out.paste(im_bg, (0, i*size))
im_out.paste(im_w, (dw, i*size+dh), mask=im_w)
else:
im_out.paste(im_bg, (i*size, 0))
im_out.paste(im_w, (i*size+dw, dh), mask=im_w)
im_out.save('%s.png'%text)
os.startfile('%s.png'%text)
if __name__=='__main__':
write_couplets('普天同慶', horv='V', quality='H')
write_couplets('歡度春節(jié)', horv='V', quality='H')
write_couplets('國泰民安', horv='H', quality='H')
最后,祝大家新年快樂,虎年大吉,虎虎生威,身體健康,事事順心。
原文鏈接:https://blog.csdn.net/xufive/article/details/122623982
《新程序員003》正式上市,50余位技術(shù)專家共同創(chuàng)作,云原生和數(shù)字化的開發(fā)者們的一本技術(shù)精選圖書。內(nèi)容既有發(fā)展趨勢及方法論結(jié)構(gòu),華為、阿里、字節(jié)跳動、網(wǎng)易、快手、微軟、亞馬遜、英特爾、西門子、施耐德等30多家知名公司云原生和數(shù)字化一手實戰(zhàn)經(jīng)驗!