Network Science using Networkx Module in Python

Application of Network Science in Filipino Food and its Ingredients

Flippy Garcia
17 min readAug 6, 2023
Image 01. Sample Filipino Meal. (Photo by Eiliv Aceron on Unsplash)

Filipino food is a distinctive blend of sweet, sour, salty, and savory flavors. Given that the Philippines have more than 7000 islands, the culinary landscape sometimes differs from region to region. Some regions might offer spicy or salty food depending on the culture in that region. All this evolutionary difference in the regional cuisine is a product of long historical exchanges of different places with other people like Malay, Spanish, Chinese, and American.[1] Filipino viands typically have a strong flavor that is intended to be paired with rice. Rice is a staple carbohydrate source in some Asian countries like the Philippines.

Even on the international stage, Filipino food is recognized. Filipino dishes like Bulalo and Sinigang are among the top 50 best-rated soups in the world, according to Taste Atlas, a web platform showcasing the world’s culinary diversity.[2] This shows that not only the Filipino food celebrated in the Philippines but other countries are in love with the taste and richness of Filipino flavors.

Introduction

Significance of the study

Humans interact with the food industry from end to end. From plant and animal farms to food processing and the logistics needed, much human labor is needed to serve that food on your plate. The food Service (i.e., restaurants) industry is also a significant player in this food value chain. They provide convenient food experiences beyond satisfying their customers’ hunger.

The COVID-19 pandemic greatly impacted the global food service industry. Dine-in restaurants are closed for a long time, given there are lockdowns in some countries restricting the movement of people. Throughout the pandemic, the food service industry has evolved. It accelerated the transformation to online delivery, and after the lockdowns were lifted, the alfresco dining style was promoted. Despite this, the global food service market is recovering, with USD 2,395.03 billion in 2022. It is projected to grow to USD 2,646.99 billion in 2022 and USD 5,423.59 billion by 2030, with a compound annual growth rate (CAGR) of 10.79%.[3] Meanwhile, in the Philippines, the food service market is at USD 14.10 billion in 2023 and expected to be USD 31.47 billion by 2029 with a CAGR of 14.32%.[4]

All this means that the problems this industry faces impact not just many people working in it but also the country’s economy. Moreover, the food service industry’s cultural impact plays a crucial role in preserving the heritage of some traditional cuisine and culinary practices. The food service industry has evolved from serving food to providing a dining experience.

Statement of the Problem

In the food service industry, like restaurants, some food items are fast-moving while others are slow. Fast-moving means it is ordered by people, often causing rapid movement in the inventory of its ingredients. This implies that some ingredients in a food service kitchen need to be replenished more often than others. To prevent extreme inventory imbalance and be more cost-effective, restaurants limit their inventory of each ingredient (also referred to as Stock Keeping Unit / SKU).

The problem we would like to solve is how we can create a restaurant that serves a diverse Filipino food dish while keeping its unique SKU to a minimum. The lesser unique inventory items we need to manage, the better. Still, we also want to deliver a holistic and diverse Filipino food experience.

Scope and Limitation

This project was limited to 25 possible options for Filipino food main dishes. Although there are a lot of variations of this Filipino food dishes, the ingredients considered are from those well-known recipes in Metro Manila, Philippines.

Background and Basics

Network Science

We will use the framework of Network Science to answer the questions we have posed. Network science is an interdisciplinary field of study that deals with analyzing, modeling, and understanding complex systems (systems composed of many interconnected components) represented as networks. The network has two main components: nodes and links (sometimes called vertex and edge). A network is an interconnected node with the connection represented by the links.[5] Based on this connection, several insights can be gathered. These connections can have different configurations, an example of which is a Bipartite graph. Here two sets of nodes can only be connected to the other type of node (no link connecting nodes from the same set). This is typically applied in data that shows a subset or relationship between 2 kinds of elements. Bipartite graphs can be dissected into two projections corresponding to each set of nodes. In this projection, the nodes are connected if they are connected to the same node of the opposite set, with values of the connection corresponding to how many times they are connected in the original network.

In analyzing a network, these are some of the numbers/processes that give insight. We will explore these values in our network and determine what insights they shed to solve our problem.

1. Degree distribution — degree is the number of connections (links) a node has. Understanding the degree distribution and average degree gives insight into how connected the nodes in the network are.

2. Characteristics Path Length — path length is the number of jumps the network needs to go from one node to another. It determines how well related two different nodes are in the network. In some cases, it helps measure the efficiency of information flow.

3. Clustering Coefficient — this value describes how connected the nodes of your neighbors are to each other. It detects the formation of local clustering of nodes.

4. Degree Centrality — this is the most intuitive measure of centrality where the most connected node is determined.

5. Closeness Centrality — this describes a node that is “closest” to every other node in the network by virtue of path length.

6. Eigencentrality — measures a node’s centrality by determining its connection to other important nodes (i.e., high degree or high in value inherent to the connection). This is important because some nodes might be highly connected only to those leaf nodes (only has one connection). Thus, we want to identify the node that is connected most to the “influential” nodes.

7. Betweenness Centrality — describes the node that is most “included” in the shortest path of pairs of nodes. This means that most of the shortest paths pass through from all possible pairs of nodes to this node.

8. Community detection — is a process of determining the formation of local communities in the network. Communities in a network are a more tightly connected part of the network, mainly interacting only with other members within the same community.

Networks can be represented as a matrix (more specifically, adjacency matrix) to facilitate efficient and fast calculation of these network metrics. A row and column in the adjacency matrix represent each node. The connection between nodes is tagged by having one as the value. This value can be changed to represent the strength of the connection between two nodes. In our analysis, we will use the library of Python called `Networkx` to do this calculation and visualization.

pip install networkx

Application of Network Science in Food and its Ingredients

In applying Network Science in Food and its ingredients, we will use a Bipartite network. The first set of nodes are the ingredients, the second set of nodes are the food dishes, and the nodes are connected if the ingredients are included in the food recipe. Note here that we only account for including ingredients and not the entire quantity. Even if a small amount of ingredients was used, it is still considered in the network.

Setting up the data

As stated in the scope and limitations, we will only use 25 Filipino food main dishes. The ingredients are based on the experience and expertise of the consulted food industry professional and some recipes on the Panlasang Pinoy website.[6] The ingredients are listed in the Python dictionary shown below.

# Curated dataset
food_ingredients = {
"Chicken Adobo": {"Chicken", "Soy Sauce", "Vinegar", "Garlic", "Bay Leaves", "Peppercorn", "Cooking Oil"},
"Pork Sinigang": {"Pork", "Tamarind", "Red Onion", "Tomato", "Radish", "String Beans", "Eggplant", "Kangkong", "Okra", "Taro"},
"Kare-kare": {"Oxtail", "Tripe", "Peanut", "Cooking Oil", "White Onion", "Garlic", "Bagoong", "Ground Pepper", "Eggplant", "String Beans", "Pechay"},
"Nilagang Baka": {"Beef", "Corn on the Cob", "Potato", "Chinese Cabbage", "Peppercorn", "Red Onion", "Garlic"},
"Bicol Express": {"Pork", "Coconut Milk", "Red Chili", "Green Chili", "Bagoong", "Garlic", "Cooking Oil", "Ground Pepper"},
"Tinola": {"Chicken", "Ginger", "Garlic", "Chayote", "Chili Leaves", "Cooking Oil"},
"Bulalo": {"Beef Shanks", "Bone Marrow", "Corn on the Cob", "Cabbage", "Peppercorn"},
"Laing": {"Taro Leaves", "Coconut Milk", "Red Chili", "Bagoong"},
"Mechado": {"Beef", "Cooking Oil", "Red Onion", "Garlic", "Tomato", "Soy Sauce", "Calamansi", "Beef Broth", "Tomato Sauce", "Potato", "Carrot", "Green Bell Pepper", "Bay Leaves"},
"Afritada": {"Chicken", "Cooking Oil", "Red Onion", "Garlic", "Tomato", "Soy Sauce", "Chicken Broth", "Potato", "Carrot", "Red Bell Pepper", "Green Bell Pepper", "Green Peas", "Bay Leaves"},
"Menudo": {"Pork", "Cooking Oil", "Red Onion", "Garlic", "Soy Sauce", "Tomato Sauce", "Potato", "Carrot", "Red Bell Pepper", "Green Bell Pepper", "Green Peas", "Liver Spread", "Bay Leaves"},
"Caldereta": {"Beef", "Cooking Oil", "Red Onion", "Garlic", "Tomato", "Soy Sauce", "Beef Broth", "Tomato Sauce", "Liver Spread", "Potato", "Carrot", "Red Bell Pepper", "Green Bell Pepper", "Green Peas", "Bay Leaves"},
"Pinakbet": {"Eggplant", "Okra", "Squash", "Bitter Gourd", "Bagoong", "Garlic", "Red Onion", "Cooking Oil"},
"Bistek Tagalog": {"Beef", "Soy Sauce", "Calamansi", "Garlic", "White Onion"},
"Ginataang Manok": {"Chicken", "Ginger", "Red Onion", "Garlic", "Cooking Oil", "Coconut Milk", "Chayote", "Green Chili"},
"Dinuguan": {"Pork", "Pork Blood", "Vinegar", "Green Chili", "Red Onion", "Garlic", "Cooking Oil"},
"Inihaw na Liempo": {"Pork Liempo", "Soy Sauce", "Garlic", "Ground Pepper"},
"Tapa": {"Beef", "Soy Sauce", "Garlic", "Ground Pepper", "Calamansi", "Cooking Oil"},
"Pork Sisig": {"Pork Mask", "Peppercorn", "Cooking Oil", "Mayonnaise", "Red Chili", "Green Chili", "Liquid Seasoning"},
"Crispy Pata": {"Pork Hock", "Red Onion", "Peppercorn", "Cooking Oil"},
"Daing na Bangus": {"Bangus", "Soy Sauce", "Garlic", "Ground Pepper", "Calamansi", "Cooking Oil"},
"Chopsuey": {"Cauliflower Florets", "Cooking Oil", "Garlic", "Carrot", "Cabbage", "Red Bell Pepper", "Green Bell Pepper", "Young Corn", "Quail Eggs", "Soy Sauce", "Oyster Sauce"},
"Ginisang Ampalaya": {"Bitter Gourd", "Eggs", "Tomato", "Cooking Oil", "Red Onion"},
"Igado": {"Pork", "Liver", "Cooking Oil", "Red Onion", "Garlic", "Soy Sauce", "Vinegar", "Red Bell Pepper", "Green Peas", "Carrot"},
"Chicken Curry": {"Chicken", "Ginger", "Red Onion", "Garlic", "Cooking Oil", "Coconut Milk", "Curry Powder", "Potato", "Carrot"}
}

Water, salt, sugar, MSG, and other basic ingredients and seasonings are removed from the list of ingredients because they are almost all present in all recipes. These ingredients are necessary if we wish to build a food service establishment. To have meaningful insight into our analysis, we will focus on those ingredients we might have to decide whether to include in our inventory. Another consideration is those dishes that require specific meat (i.e., bone marrow, beef shanks). They are separate SKUs compared to Beef, Pork, and Chicken, which encompasses any part.

Simple Exploratory Data Analysis

Before analyzing the network of food and ingredients, let us first explore the distribution of ingredient counts.

# Iterate through the dictionary and store the ingredient length of each dish
food_lengths = {}
for dish, ingredients in food_ingredients.items():
length = len(ingredients)
food_lengths[dish] = length

# Get the lengths list
lengths_list = list(food_lengths.values())

# Plot the histogram
fig, ax = plt.subplots(1, 1, figsize=(10, 6))
ax.hist(lengths_list, bins=range(1, max(lengths_list) + 2), color='indianred')
ax.set_xlabel('Number of Ingredients')
ax.set_ylabel('Frequency')
ax.set_title('Histogram of Food Lengths')
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
plt.show()
Figure 01. Histogram of Food lengths.

The dataset consists of 25 unique Filipino dishes and 63 unique ingredients. The number of ingredients per dish varies greatly. The type of cooking can be a factor in the number of ingredients as some methods, like grilled and fried foods, require fewer ingredients than those that are soup based. Most dishes in the dataset have ingredients ranging from 4 to 9, while some have extreme values that can go high as 16. Looking at this distribution, we can see that serving food with low ingredient counts could potentially decrease inventory costs.

Exploratory Network Analysis

Bipartite Graph and its Projection

We will now use the module Networkx to process and calculate network-related values. First, let us set up our network by building it using our dictionary. Here we will create a networkx graph by adding an edge between foods and their ingredients.

# Create an empty bipartite graph
B = nx.Graph()

# Extract the food dishes and ingredients as separate sets
foods = set(food_ingredients.keys())
ingredients = set(ingredient for ingredients in food_ingredients.values()
for ingredient in ingredients)

# Add nodes from both sets to the graph
B.add_nodes_from(foods, bipartite=0)
B.add_nodes_from(ingredients, bipartite=1)

# Create connections between food and ingredient nodes
for food, ingredients in food_ingredients.items():
for ingredient in ingredients:
B.add_edge(food, ingredient)

# Create a node color list based on the bipartite attribute
node_color = ['cornflowerblue' if B.nodes[node]['bipartite'] == 0
else 'indianred' for node in B.nodes]

# Plot the bipartite graph
plt.figure(figsize=(15, 15)) # Set the figure size larger
pos = nx.bipartite_layout(B, foods)
nx.draw_networkx(B, pos=pos, with_labels=True,
node_color=node_color, font_size=8, edge_color='#D3D3D3')
plt.title("Bipartite Graph of Food and their corresponding Ingredients")
plt.show()
Figure 02. Bipartite Graph of Food and Ingredients Network.

To facilitate a better understanding, we will color code it. The blue nodes on the left are the foods, while the red nodes on the left are the ingredients. From these, we could get the projection of the food network by creating a network that connects foods with common ingredients. Similarly, we could get the projection of the ingredients network by creating a network that connects ingredients if they share similar food recipes.

# Get the projections of the bipartite graph
food_projection = nx.bipartite.projected_graph(B, foods)
ingredient_projection = nx.bipartite.projected_graph(B, ingredients)
# Plot the food projection
plt.figure(figsize=(10, 6))
pos_food = nx.kamada_kawai_layout(food_projection)
nx.draw(food_projection, pos=pos_food, with_labels=True,
node_color='cornflowerblue', font_size=8, edge_color='#D3D3D3')
plt.title("Food Projection")
plt.show()
Figure 03. Projection of Food Nodes in the Network.

Although there are a few nodes in the Food projection network, links between them are a lot because they share many ingredients. From this visualization, we initially see that Laing, Bulalo, and Pork Sinigang seem far from the rest of the network. Menudo, Afritada, Ginatang Manok, and Bicol Express are seemingly at this network’s center. Later we could have more conclusive insights when calculating metrics describing this projection network.

# Plot the ingredient projection
plt.figure(figsize=(10, 6))
pos_ingredient = nx.kamada_kawai_layout(ingredient_projection)
nx.draw(ingredient_projection, pos=pos_ingredient, with_labels=True,
node_color='indianred', font_size=8, edge_color='#D3D3D3')
plt.title("Ingredient Projection")
plt.show()
Figure 04. Projection of Ingredients Nodes in the Network.

This visualization showed the most central ingredient nodes: Cooking Oil, Garlic, Red Onion, Chicken, Potato, and Carrot. Interestingly some ingredients in the outer shell of this diagram (the outermost part of the network) are connected only to one other ingredient in the network. This provides a unique flavor to a dish.

Degree Distribution, Path Lengths, and Clustering Coefficients

Now that our network is established and the food and ingredient projection, we will calculate the Degree Distribution, Path Lengths, and Clustering Coefficient of these two projections.

def degree_pathlength_clustering(G, title):
"""Calculates degree distribution, pathlength, and clustering coefficient
of the given network."""
# Degree Distribution
degree_sequence = [G.degree(node) for node in G.nodes()]

# Calculate the diameter and characteristic path length
diameter = nx.diameter(G)
characteristic_path_length = nx.average_shortest_path_length(G)

# Calculate the clustering coefficient
clustering_coefficient = nx.average_clustering(G)

# Adjust color
if title == "Food":
color = "cornflowerblue"
else:
color = "indianred"

# Plot the degree distribution histogram
fig, ax = plt.subplots(1, 1, figsize=(10, 6))
ax.hist(degree_sequence, bins=range(1, max(degree_sequence) + 2),
color=color)
ax.set_xlabel('Degree')
ax.set_ylabel('Frequency')
ax.set_title(f'Degree Distribution of {title} Projection')
plt.show()

# Print the diameter, characteristic path length, and clustering coefficient
print("Diameter:", diameter)
print("Characteristic Path Length:", characteristic_path_length)
print("Clustering Coefficient:", clustering_coefficient)
Figure 05. Degree Distribution of Food Projection in the Network.

Looking at the degree distribution of the Food projection network, we can now conclude that most food has a high degree. In this case, a high degree means they share at least one common ingredient with other food. This displays high commonality in terms of ingredients between our food lists.

Figure 06. Degree Distribution of Ingredient Projection in the Network.

In the ingredients projection degree distribution, we could see an opposite behavior in distribution. There are a lot of nodes that have low degree. This implies that ingredients, in general, are connected to only a few other ingredients (they don’t share the same food recipe). But there are some notable exemptions to this, such as the case of those two ingredients in the far right of the distribution. Upon inspection of the results, these are Cooking Oil and Garlic. Therefore we might say that these are the most important ingredients needed in the kitchen.

Centrality Measures

Next, we will determine the different centrality measures of the food and ingredient projections.

def centrality_measure(G, centrality_measure, title, limit):
"""Calculates the centrality measures of each node. Centrality measures may
be one of the following: Degree, Closeness, Betweenness, and Eigenvector."""
# Calculate the centrality measure and sorts it
if centrality_measure == "Degree":
cent_measure = nx.degree_centrality(G)
elif centrality_measure == "Closeness":
cent_measure = nx.closeness_centrality(G)
elif centrality_measure == "Betweenness":
cent_measure = nx.betweenness_centrality(G)
elif centrality_measure == "Eigenvector":
cent_measure = nx.eigenvector_centrality(G)

sorted_cent_measure = {k: v for k, v in sorted(cent_measure.items(),
key=lambda item: item[1],
reverse=True)}

# Get the top 'limit' items
top_items = dict(list(sorted_cent_measure.items())[:limit])

# Adjust color
if title == "Food":
color = "cornflowerblue"
else:
color = "indianred"

# Plot the degree centrality as a horizontal bar chart
plt.figure(figsize=(8, 5))
plt.barh(list(top_items.keys()), list(top_items.values()), color=color)
plt.xlabel('Degree Centrality')
plt.ylabel('Node')
plt.title(f'Top {centrality_measure} Centrality '
f'Nodes in {title} Projection')
plt.gca().invert_yaxis()

# Annotate the value for the top 1 node
top_node = list(top_items.keys())[0]
top_value = list(top_items.values())[0]
plt.text(top_value, top_node, f"{top_value:.4f}", va='center', ha='right',
color='white', fontweight='bold')
plt.show()
Figure 07. Degree, Closeness, Betweenness, and Eigenvector Centrality of Food Projection.

The top nodes in Degree and Closeness centrality are Bicol Express, Nilagang Baka, Ginataang Manok, Kare-Kare, and Chicken Curry. But in connecting different groups of foods, pork sisig plays an important role in having ingredients shared across different foods. Regarding Eigenvector, several dishes have the same value because most foods are interconnected.

Figure 08. Degree, Closeness, Betweenness, and Eigenvector Centrality of Ingredients Projection.

For ingredients projection, the top 4 are unchanged across all centrality measures. Cooking oil, Garlic, Red Onion, and Carrot are the top ingredients necessary to build a kitchen covering this Filipino food.

Community Detection

Next, we want to detect if certain communities are formed in the projections of food and ingredients. These communities might shed insight into what possible food or ingredients we use in an efficient kitchen.

def community_detection(G, title):
"""Performs community detection on a given network using Louvain method."""
# Perform community detection using Louvain method
partition = community.community_louvain.best_partition(G)

# Create a layout for visualization
pos = nx.kamada_kawai_layout(G)

# Create a list of colors for each community
colors = [partition[node] for node in G.nodes()]

# Visualize the network with nodes colored according to their communities
plt.figure(figsize=(10, 6))
nx.draw(G, pos, with_labels=True, node_color=colors, cmap='tab20',
node_size=300, font_size=8, edge_color='#D3D3D3')
plt.title(f'{title} Projection with Communities (Louvain Method)')
plt.show()
Figure 09. Community Detection in Food Projection of the Network.

In food projection, three communities formed.

1. The first community comprises Bulalo, Chicken Adobo, Tapa, Inihaw na Liempo, Bistek Tagalog, Daing na Bangus, Chopsuey, Tinola, and Nilagagang Baka.

2. The second community comprises Crispy Pata, Dinuguan, Ginisang Ampalaya, Pork Sinigang, Igado, Mechado, Caldereta, Afritada, and Menudo.

3. The third community comprises Pork Sisig, Ginataang Manok, Kare-Kare, Laing, Chicken Curry, Bicol Express, and Pinakbet.

Upon interpretation of the community members, the following are concluded: First community are the fried, grilled food, and some are soup based. The second community is the food that is a specialty of specific regions in the Philippines. Third is the tomato-based sarsa and other fried and soup-based dishes. These communities could be considered in creating a theme in a food service restaurant.

Figure 10. Community Detection in Ingredient Projection of the Network.

In Ingredient projection, four communities are formed.

1. The first community comprises Pork Mask, Liquid Seasoning, Mayonnaise, Pechay, Oyster Sauce, Tripe, Cooking Oil, Bangus, and Eggs.

2. The second community comprises Eggplant, Pork Hock, Red Onion, Kangkong, Taro, Raddish, Tamarind, Corn on the Cob, Bitter Gourd, String Beans, Squash, and Okra.

3. The third community comprises Chili Leaves, Chicken, Ginger, Peppercorn, Pork, Green Chili, Curry Powder, Chayote, Coconut Milk, Taro Leaves, Bagoong, Ground Pepper, Red Chili, and Vinegar.

4. The fourth community comprises Cauliflower Florets, Young Corn, Cabbage, Quail Eggs, White Onion, Peanut, Oxtail, Pork Liempo, Pork Blood, Tomato Sauce, Garlic, Carrot, Liver Spread, Calamansi, Liver, Beef Broth, Beef, Soy Sauce, Green Bell Pepper, Green Peas, Tomato, Bay Leaves, Chicken Broth, Red Bell Pepper, and Chinese Cabbage.

Upon analysis of communities formed, there seem to be no similarities in flavors and characteristics between members of the same community. The diversity of ingredients is the key to creating a flavorful Filipino dish.

Insights and Reflections

Returning to the problem statement: How can we create a restaurant that serves a diverse Filipino food dish while keeping its unique SKU to a minimum? We will answer it by combining the results of our analysis.

The top 5 food in degree and closeness centrality will be part of our menu: Bicol Express, Nilagang Baka, Ginataang Manok, Kare-Kare, and Chicken Curry. In addition, the highest betweenness centrality will also be included in Pork Sisig, as it could be a bridge between current and future menu offerings. Upon inspection, the first six foods are majority members of the second community referencing specialty food of different regions in the Philippines. Therefore, I would also include dishes such as Pinakbet and Laing to complete their community.

Image 02. Final Suggested Main Dish for the Food Service Restaurant. (Image from Panlasang Pinoy website).

The final menu of the restaurant will serve diverse Filipino food while keeping its unique SKU at a minimum is, consist of Bicol Express, Laing, Ginataang Manok, Chicken Curry, Kare-Kare, Nilagang Baka, Pork Sisig, and Pinakbet. These eight main dishes will only account for 33 unique ingredients. For this kitchen, aside from the usual seasonings (i.e., salt, sugar), it will have the inventory of the following: Bagoong, Beef, Bitter Gourd, Carrot, Chayote, Chicken, Chinese Cabbage, Coconut Milk, Cooking Oil, Corn on the Cob, Curry Powder, Eggplant, Garlic, Ginger, Green Chili, Ground Pepper, Liquid Seasoning, Mayonnaise, Okra, Oxtail, Peanut, Pechay, Peppercorn, Pork, Pork Mask, Potato, Red Chili, Red Onion, Squash, String Beans, Taro Leaves, Tripe, White Onion.

Conclusions & Recommendations

Network science could be applied to diverse fields and topics. In this study, we have demonstrated how we can use centrality measures and community detection in creating a menu for food service restaurants that will serve diverse Filipino cuisine but still minimize the inventory — striking a balance between the diversity of flavors and cost-efficiency of inventory.

Aside from cost-efficiency consideration, looking into the themes that might define a restaurant is essential. There are many other considerations in building up a menu for a restaurant, and network science could be one tool used to iterate and build it.

A recommendation for future extension of this study is to create a more extensive network covering all variants of similar dishes (i.e., Pork Adobo, Chicken Adobo). What I have shown here is just scratching the surface of Network Science.

References

[1] Ettenberg, J. (2017, Jun 29) Origins of Food we Love: The Cuisine of the Philippines. The Asian country’s food is as diverse as it is delicious. Retrieved August 6, 2023, from https://www.gadventures.com/blog/origins-food-we-love-cuisine-philipines/

[2] Taste Atlas (2023, Aug 3) 50 Best Rated SOUPS in the World. Retrieved August 6, 2023, from https://www.tasteatlas.com/50-best-rated-soups-in-the-world

[3] Fortune Business Insights (Jun 2023) Food Service Market Size, Share & COVID-19 Impact Analysis, By Type (Full Service Restaurants, Quick Service Restaurants, Institute, and Others), and Regional Forecast 2023–2030. Market Research Report. Retrieved August 6, 2023, from https://www.fortunebusinessinsights.com/food-service-market-106277

[4] Mordor Intelligence (2022) Food Service Industry in the Philippines Size & Share Analysis — Growth Trends & Forecast (2023–2028). Retrieved August 6, 2023, from https://www.mordorintelligence.com/industry-reports/philippines-foodservice-market

[5] Barabázi, A.L. (2016) Network Science. Cambridge University Press. Retrieved August 6, 2023, from http://networksciencebook.com/

[6] Panlasang Pinoy (n.d.) All Recipes. Retrieved August 5, 2023, from https://panlasangpinoy.com/

GitHub Repository

The code used in this post can be accessed through the following GitHub repository: https://github.com/flippygarcia/msds2023_ns_blog.git

--

--

Flippy Garcia

Master's student in Data Science at Asian Institute of Management