PowerShell ile Kelime ve Harf Analizi


Şu makalemizde Linuxta Bash Shell Script ile Kelime ve Harf Analizi yaptığımız analizin, Powershell script ile düzenlenmiş hali aşağıdadır.

Diğer makalemizde olan tüm sonuçlar, aynı şekilde bu komutlarla da yapılabilmektedir.

 

#1) Elimizde büyük bir metin dosyası var, ilk önce dosyamızı yedekleyelim.

cp Nutuk.txt Analiz1.txt

#2) Tırnak işaretinden sonra gelen harfleri silelim (Örneğin <Ankara’nın> kelimesinde <‘nın> ekini silmek gibi)

$s = Get-Content .\Analiz1.txt -Encoding UTF8
$s -replace "['’‘]\w+","" | Set-Content Analiz1.txt -Encoding UTF8

#3) Tüm türkçe harfleri ingilizce harflerine dönüştürelim (ö -> o gibi)

$dil=@"
turkce,ingilizce
ı,i
ğ,g
ü,u
ş,s
ö,o
ç,c
I,i
İ,i
Ç,c
Ş,s
Ü,u
Ğ,g
"@

$dil | Set-Content dil.csv -Encoding UTF8

$s = Get-Content .\Analiz1.txt -Encoding UTF8

$harfler = Import-csv .\dil.csv

foreach ($harf in $harfler) {

$s -replace "$($harf.turkce)","$($harf.ingilizce)" | Set-Content Analiz2.txt -Encoding UTF8
$s = Get-Content .\Analiz2.txt -Encoding UTF8

}

rm dil.csv


#4) Tüm boşlukları, virgülleri, noktaları >> satır başlarına dönüştürelim

$s = Get-Content .\Analiz2.txt
$s -replace "[ ,\.:;]","`n" | Set-Content Analiz3.txt

#5) Tüm harfleri küçültelim

$s = Get-Content .\Analiz3.txt
$s.ToLower() | Set-Content Analiz4.txt -Encoding UTF8

#6) Alfabedeki harfler haricinde tüm karakterleri kaldıralım

$s = Get-Content .\Analiz4.txt
$s -replace "((?![a-z]|[A-Z]).)","" | Set-Content Analiz5.txt

#7) Boş satırları kaldıralım

$s = Get-Content .\Analiz5.txt
$s | ? {$_.trim() -ne "" } | set-content Analiz6.txt

#8) Harflerine göre tüm kelimeleri sıralayalım

$s = Get-Content .\Analiz6.txt
$s | Sort-Object | set-content Analiz7.txt

#9) Tüm kelimeleri, tekrar sayısına göre analiz edelim

$s = Get-Content .\Analiz7.txt
$s | Group-Object | Select Name,Count | sort Count -Descending | Export-Csv Kelime_Sayilari.txt -NoTypeInformation

10) Tüm harfleri tekrar sayısına göre analiz edelim.

$Tekrarsiz = get-content Analiz7.txt | Get-Unique
$Tekrarsiz.ToCharArray() | group | select Name,Count | sort Count -Descending >> Harf_Sayilari.txt

Tüm komutlar tek parça halinde aşağıdadır:

#1) Elimizde büyük bir metin dosyası var, ilk önce dosyamızı yedekleyelim.
cp Nutuk.txt Analiz1.txt

#2) Tırnak işaretinden sonra gelen harfleri silelim (Örneğin <Ankara'nın> kelimesinde <'nın> ekini silmek gibi)
$s = Get-Content .\Analiz1.txt -Encoding UTF8
$s -replace "['’‘]\w+","" | Set-Content Analiz1.txt -Encoding UTF8


#3) Tüm türkçe harfleri ingilizce harflerine dönüştürelim (ö -> o gibi)

$dil=@"
turkce,ingilizce
ı,i
ğ,g
ü,u
ş,s
ö,o
ç,c
I,i
İ,i
Ç,c
Ş,s
Ü,u
Ğ,g
"@

$dil | Set-Content dil.csv -Encoding UTF8

$s = Get-Content .\Analiz1.txt -Encoding UTF8

$harfler = Import-csv .\dil.csv

foreach ($harf in $harfler) {

$s -replace "$($harf.turkce)","$($harf.ingilizce)" | Set-Content Analiz2.txt -Encoding UTF8
$s = Get-Content .\Analiz2.txt -Encoding UTF8

}

rm dil.csv


#4) Tüm boşlukları, virgülleri, noktaları >> satır başlarına dönüştürelim

$s = Get-Content .\Analiz2.txt
$s -replace "[ ,\.:;]","`n" | Set-Content Analiz3.txt


#5) Tüm harfleri küçültelim

$s = Get-Content .\Analiz3.txt
$s.ToLower() |  Set-Content Analiz4.txt -Encoding UTF8


#6) Alfabedeki harfler haricinde tüm karakterleri kaldıralım

$s = Get-Content .\Analiz4.txt
$s -replace "((?![a-z]|[A-Z]).)","" | Set-Content Analiz5.txt


#7) Boş satırları kaldıralım


$s = Get-Content .\Analiz5.txt
$s | ? {$_.trim() -ne "" } | set-content Analiz6.txt


#8) Harflerine göre tüm kelimeleri sıralayalım

$s = Get-Content .\Analiz6.txt
$s |  Sort-Object | set-content Analiz7.txt


#9) Tüm kelimeleri, tekrar sayısına göre analiz edelim
$s = Get-Content .\Analiz7.txt
$s | Group-Object | Select Name,Count | sort Count -Descending | Export-Csv Kelime_Sayilari.txt -NoTypeInformation

#10) Tüm harfleri tekrar sayısına göre analiz edelim.
$Tekrarsiz = get-content Analiz7.txt | Get-Unique
$Tekrarsiz.ToCharArray() | group | select Name,Count | sort Count -Descending >> Harf_Sayilari.txt


 

, ,

  1. Henüz hiç yorum yok.
(yayınlanmayacak)