Rumah > php教程 > PHP源码 > php根据词频生成tag云

php根据词频生成tag云

大家讲道理
Lepaskan: 2016-11-11 09:41:12
asal
1336 orang telah melayarinya

给定一段文本,此代码分析文本的词频分布,生成tag云

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

<?php

    

// Store frequency of words in an array

$freqData = array();

    

// Random words

$lorem = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Phasellus vestibulum ullamcorper tortor. Aenean quis lacus quis neque

adipiscing ultricies. Pellentesque tincidunt ligula vitae nibh ornare

pharetra. Proin dignissim tortor. Donec et ipsum nec tellus gravida

tempor. Aliquam ullamcorper purus vel felis. Praesent faucibus.

Curabitur porta. Nulla in lorem quis mi lacinia fringilla. Integer

adipiscing mi quis felis. Pellentesque habitant morbi tristique senectus

et netus et malesuada fames ac turpis egestas. Quisque sagittis ante in

arcu. Sed libero enim, venenatis sit amet, vestibulum at, porttitor id,

neque. Vestibulum ornare semper erat. Sed tincidunt nibh et massa. Cras

sed diam. Quisque blandit enim.

    

    

Sed nonummy. Aenean mollis turpis quis enim. Nam massa nulla, varius

molestie, aliquet et, feugiat eget, nisi. Sed mollis, leo ut pretium

placerat, nibh turpis egestas ipsum, sed aliquam neque enim in risus.

Nullam nisl. Sed tincidunt leo quis tellus. Mauris non lorem. Aenean

tristique justo at arcu. Fusce et lorem. Nam sodales. Mauris condimentum

diam. Nam commodo. Cum sociis natoque penatibus et magnis dis parturient

montes, nascetur ridiculus mus. Cras ac risus. Proin et dolor laoreet mi

gravida sodales. Duis bibendum, ipsum posuere egestas posuere, dui lacus

feugiat turpis, id tincidunt urna est sit amet est. Cras eu sem.

";

    

// Get individual words and build a frequency table

foreach( str_word_count( $lorem, 1 ) as $word )

{

    // For each word found in the frequency table, increment its value by one

    array_key_exists( $word, $freqData ) ? $freqData[ $word ]++ : $freqData[ $word ] = 0;

}

    

// ==============================================================

// = Function to actually generate the cloud from provided data =

// ==============================================================

function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )

{

    $minimumCount = min( array_values( $data ) );

    $maximumCount = max( array_values( $data ) );

    $spread       = $maximumCount - $minimumCount;

    $cloudHTML    = &#39;&#39;;

    $cloudTags    = array();

    

    $spread == 0 && $spread = 1;

    

    foreach( $data as $tag => $count )

    {

        $size = $minFontSize + ( $count - $minimumCount )

            * ( $maxFontSize - $minFontSize ) / $spread;

        $cloudTags[] = &#39;<a style="font-size: &#39; . floor( $size ) . &#39;px&#39;

        . &#39;" class="tag_cloud" href="http://www.google.com/search?q=&#39; . $tag

        . &#39;" title="\&#39;&#39; . $tag  . &#39;\&#39; returned a count of &#39; . $count . &#39;">&#39;

        . htmlspecialchars( stripslashes( $tag ) ) . &#39;</a>&#39;;

    }

    

    return join( "\n", $cloudTags ) . "\n";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title>Tag Cloud Demo</title>

    <style type="text/css" media="screen">

        /*<![CDATA[*/

        .tag_cloud { padding: 3px; text-decoration: none; }

        .tag_cloud:link  { color: #81d601; }

        .tag_cloud:visited { color: #019c05; }

        .tag_cloud:hover { color: #ffffff; background: #69da03; }

        .tag_cloud:active { color: #ffffff; background: #ACFC65; }

        /*]]>*/

    </style>

</head>

    

<body>

    <h1>Sample Tag Cloud</h1>

    <div id="wrapper">

        <?php echo getCloud( $freqData ) ?>

    </div>

</body>

</html>

Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan